1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| // Publisher that routes messages to different queues
func publishToExchange() {
consumer, err := mqutils.NewConsumer("amqp://localhost:5672/unused")
if err != nil {
log.Fatal(err)
}
defer consumer.Close()
publisher := consumer.Publisher()
// Route to different queues using routing keys
events := []struct {
routingKey string
message string
}{
{"user.created", `{"event": "user_created", "id": 123}`},
{"user.updated", `{"event": "user_updated", "id": 123}`},
{"order.placed", `{"event": "order_placed", "order_id": 456}`},
}
for _, event := range events {
builder := publisher.NewMessageBuilder()
msg := builder.
SetRoutingKey(event.routingKey).
SetExchange("events").
SetHeaders(map[string]interface{}{
"event_type": event.routingKey,
"timestamp": time.Now().Unix(),
}).
SetBody([]byte(event.message)).
Build()
err := publisher.PublishMessage("", msg) // Empty destination, routing key used
if err != nil {
log.Printf("Failed to publish %s: %v", event.routingKey, err)
}
}
}
|