Skip to content

Commit 8681428

Browse files
committed
Add an example
Signed-off-by: Gabriele Santomaggio <[email protected]>
1 parent aa4c08c commit 8681428

File tree

3 files changed

+112
-9
lines changed

3 files changed

+112
-9
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,10 @@ This library is in early stages of development. It is meant to be used with Rabb
1010

1111
## Getting Started
1212

13-
You can find an example in: `examples/getting_started`
13+
You can find an example in: `docs/examples/getting_started`
14+
15+
## Examples
16+
17+
You can find more examples in: `docs/examples`
18+
19+

examples/getting_started/main.go renamed to docs/examples/getting_started/main.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,16 @@ func main() {
8585
deliveryContext, err := consumer.Receive(ctx)
8686
if errors.Is(err, context.Canceled) {
8787
// The consumer was closed correctly
88-
rabbitmq_amqp.Info("[NewConsumer]", "consumer closed. Context", err)
88+
rabbitmq_amqp.Info("[Consumer]", "consumer closed. Context", err)
8989
return
9090
}
9191
if err != nil {
9292
// An error occurred receiving the message
93-
rabbitmq_amqp.Error("[NewConsumer]", "Error receiving message", err)
93+
rabbitmq_amqp.Error("[Consumer]", "Error receiving message", err)
9494
return
9595
}
9696

97-
rabbitmq_amqp.Info("[NewConsumer]", "Received message",
97+
rabbitmq_amqp.Info("[Consumer]", "Received message",
9898
fmt.Sprintf("%s", deliveryContext.Message().Data))
9999

100100
err = deliveryContext.Accept(context.Background())
@@ -122,16 +122,16 @@ func main() {
122122
}
123123
switch publishResult.Outcome.(type) {
124124
case *amqp.StateAccepted:
125-
rabbitmq_amqp.Info("[NewTargetPublisher]", "Message accepted", publishResult.Message.Data[0])
125+
rabbitmq_amqp.Info("[Publisher]", "Message accepted", publishResult.Message.Data[0])
126126
break
127127
case *amqp.StateReleased:
128-
rabbitmq_amqp.Warn("[NewTargetPublisher]", "Message was not routed", publishResult.Message.Data[0])
128+
rabbitmq_amqp.Warn("[Publisher]", "Message was not routed", publishResult.Message.Data[0])
129129
break
130130
case *amqp.StateRejected:
131-
rabbitmq_amqp.Warn("[NewTargetPublisher]", "Message rejected", publishResult.Message.Data[0])
131+
rabbitmq_amqp.Warn("[Publisher]", "Message rejected", publishResult.Message.Data[0])
132132
stateType := publishResult.Outcome.(*amqp.StateRejected)
133133
if stateType.Error != nil {
134-
rabbitmq_amqp.Warn("[NewTargetPublisher]", "Message rejected with error: %v", stateType.Error)
134+
rabbitmq_amqp.Warn("[Publisher]", "Message rejected with error: %v", stateType.Error)
135135
}
136136
break
137137
default:
@@ -150,11 +150,13 @@ func main() {
150150
//Close the consumer
151151
err = consumer.Close(context.Background())
152152
if err != nil {
153-
rabbitmq_amqp.Error("[NewConsumer]", err)
153+
rabbitmq_amqp.Error("[Consumer]", err)
154+
return
154155
}
155156
// Close the publisher
156157
err = publisher.Close(context.Background())
157158
if err != nil {
159+
rabbitmq_amqp.Error("[Publisher]", err)
158160
return
159161
}
160162

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"github.com/Azure/go-amqp"
6+
"github.com/rabbitmq/rabbitmq-amqp-go-client/rabbitmq_amqp"
7+
)
8+
9+
func validateOutcome(outcome amqp.DeliveryState) {
10+
11+
switch outcome.(type) {
12+
case *amqp.StateAccepted:
13+
rabbitmq_amqp.Info("Message accepted")
14+
default:
15+
rabbitmq_amqp.Info("Message not accepted")
16+
panic("Message not accepted")
17+
}
18+
19+
}
20+
21+
func main() {
22+
23+
rabbitmq_amqp.Info("Multi Target Publisher with AMQP Go AMQP 1.0 Client")
24+
queueName1 := "multi-target-queue-1"
25+
queueName2 := "multi-target-queue-2"
26+
27+
connection, err := rabbitmq_amqp.Dial(context.Background(), []string{"amqp://"}, nil)
28+
if err != nil {
29+
return
30+
}
31+
32+
_, err = connection.Management().DeclareQueue(context.Background(), &rabbitmq_amqp.QueueSpecification{
33+
Name: queueName1,
34+
QueueType: rabbitmq_amqp.QueueType{Type: rabbitmq_amqp.Quorum},
35+
})
36+
if err != nil {
37+
return
38+
}
39+
40+
_, err = connection.Management().DeclareQueue(context.Background(), &rabbitmq_amqp.QueueSpecification{
41+
Name: queueName2,
42+
QueueType: rabbitmq_amqp.QueueType{Type: rabbitmq_amqp.Classic},
43+
})
44+
45+
if err != nil {
46+
return
47+
}
48+
49+
// Create a publisher that can publish to multiple targets
50+
mtPublisher, err := connection.NewMultiTargetsPublisher(context.Background(), "test")
51+
if err != nil {
52+
return
53+
}
54+
t1, _ := rabbitmq_amqp.QueueAddress(&queueName1)
55+
t2, _ := rabbitmq_amqp.QueueAddress(&queueName2)
56+
57+
publishResult, err := mtPublisher.Publish(context.Background(), amqp.NewMessage([]byte("hello")), t1)
58+
if err != nil {
59+
return
60+
}
61+
62+
validateOutcome(publishResult.Outcome)
63+
64+
publishResult, err = mtPublisher.Publish(context.Background(), amqp.NewMessage([]byte("hello")), t2)
65+
if err != nil {
66+
return
67+
}
68+
69+
validateOutcome(publishResult.Outcome)
70+
71+
// Close the publisher
72+
err = mtPublisher.Close(context.Background())
73+
if err != nil {
74+
return
75+
}
76+
77+
// Delete the queues
78+
err = connection.Management().DeleteQueue(context.Background(), queueName1)
79+
if err != nil {
80+
return
81+
}
82+
83+
err = connection.Management().DeleteQueue(context.Background(), queueName2)
84+
if err != nil {
85+
return
86+
}
87+
88+
// Close the connection
89+
90+
err = connection.Close(context.Background())
91+
if err != nil {
92+
return
93+
}
94+
95+
}

0 commit comments

Comments
 (0)