66 "fmt"
77 mq "github.com/rabbitmq/rabbitmq-amqp-go-client/rabbitmq_amqp"
88 "os"
9+ "time"
910)
1011
1112func main () {
@@ -30,28 +31,64 @@ func main() {
3031 management := amqpConnection .Management ()
3132 queueSpec := management .Queue ("getting_started_queue" ).
3233 QueueType (mq.QueueType {Type : mq .Quorum }).
33- MaxLengthBytes (mq .CapacityGB (1 )).
34- DeadLetterExchange ("dead-letter-exchange" ).
35- DeadLetterRoutingKey ("dead-letter-routing-key" )
34+ MaxLengthBytes (mq .CapacityGB (1 ))
35+ exchangeSpec := management .Exchange ("getting_started_exchange" ).
36+ ExchangeType (mq.ExchangeType {Type : mq .Topic })
37+
3638 queueInfo , err := queueSpec .Declare (context .Background ())
3739 if err != nil {
40+ fmt .Printf ("Error declaring queue %s\n " , err )
3841 return
3942 }
4043 fmt .Printf ("Queue %s created.\n " , queueInfo .GetName ())
41- err = queueSpec .Delete (context .Background ())
44+
45+ exchangeInfo , err := exchangeSpec .Declare (context .Background ())
4246 if err != nil {
47+ fmt .Printf ("Error declaring exchange %s\n " , err )
4348 return
4449 }
45- fmt .Printf ("Queue %s deleted .\n " , queueInfo .GetName ())
50+ fmt .Printf ("Exchange %s created .\n " , exchangeInfo .GetName ())
4651
47- fmt .Println ("Press any key to stop " )
52+ bindingSpec := management .Binding ().SourceExchange (exchangeInfo .GetName ()).DestinationQueue (queueInfo .GetName ()).Key ("routing-key" )
53+
54+ err = bindingSpec .Bind (context .Background ())
55+ if err != nil {
56+ fmt .Printf ("Error binding %s\n " , err )
57+ return
58+ }
59+
60+ fmt .Printf ("Binding between %s and %s created.\n " , exchangeInfo .GetName (), queueInfo .GetName ())
61+
62+ fmt .Println ("Press any key to cleanup and exit" )
4863 reader := bufio .NewReader (os .Stdin )
4964 _ , _ = reader .ReadString ('\n' )
5065
66+ err = bindingSpec .Unbind (context .Background ())
67+ if err != nil {
68+ fmt .Printf ("Error unbinding %s\n " , err )
69+ return
70+ }
71+
72+ fmt .Printf ("Binding between %s and %s deleted.\n " , exchangeInfo .GetName (), queueInfo .GetName ())
73+
74+ err = exchangeSpec .Delete (context .Background ())
75+ if err != nil {
76+ fmt .Printf ("Error deleting exchange %s\n " , err )
77+ return
78+ }
79+
80+ err = queueSpec .Delete (context .Background ())
81+ if err != nil {
82+ return
83+ }
84+ fmt .Printf ("Queue %s deleted.\n " , queueInfo .GetName ())
85+
5186 err = amqpConnection .Close (context .Background ())
5287 if err != nil {
5388 return
5489 }
5590 fmt .Printf ("AMQP Connection closed.\n " )
91+ // Wait for the status change to be printed
92+ time .Sleep (500 * time .Millisecond )
5693 close (chStatusChanged )
5794}
0 commit comments