File tree Expand file tree Collapse file tree 5 files changed +147
-0
lines changed
Expand file tree Collapse file tree 5 files changed +147
-0
lines changed Original file line number Diff line number Diff line change 1+ version : ' 3'
2+
3+ services :
4+ rabbitmq :
5+ image : rabbitmq:3.11-management-alpine
6+ environment :
7+ RABBITMQ_DEFAULT_USER : guest
8+ RABBITMQ_DEFAULT_PASS : guest
9+ healthcheck :
10+ test : rabbitmq-diagnostics -q ping
11+ interval : 30s
12+ timeout : 30s
13+ retries : 3
14+ ports :
15+ - " 5672:5672"
16+ - " 15672:15672"
Original file line number Diff line number Diff line change 1+ module github.com/chilly266futon/go-rabbitmq
2+
3+ go 1.22.1
4+
5+ require github.com/rabbitmq/amqp091-go v1.9.0
Original file line number Diff line number Diff line change 1+ github.com/davecgh/go-spew v1.1.0 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
2+ github.com/davecgh/go-spew v1.1.1 /go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38 =
3+ github.com/kr/pretty v0.1.0 /go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo =
4+ github.com/kr/pty v1.1.1 /go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ =
5+ github.com/kr/text v0.1.0 /go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI =
6+ github.com/pmezard/go-difflib v1.0.0 /go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4 =
7+ github.com/rabbitmq/amqp091-go v1.9.0 h1:qrQtyzB4H8BQgEuJwhmVQqVHB9O4+MNDJCCAcpc3Aoo =
8+ github.com/rabbitmq/amqp091-go v1.9.0 /go.mod h1:+jPrT9iY2eLjRaMSRHUhc3z14E/l85kv/f+6luSD3pc =
9+ github.com/stretchr/objx v0.1.0 /go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME =
10+ github.com/stretchr/objx v0.4.0 /go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw =
11+ github.com/stretchr/testify v1.7.1 /go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg =
12+ github.com/stretchr/testify v1.8.0 /go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU =
13+ go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A =
14+ go.uber.org/goleak v1.2.1 /go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4 =
15+ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 /go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0 =
16+ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 /go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0 =
17+ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
18+ gopkg.in/yaml.v3 v3.0.1 /go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM =
Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ amqp "github.com/rabbitmq/amqp091-go"
5+ "log"
6+ )
7+
8+ func main () {
9+ conn , err := amqp .Dial ("amqp://guest:guest@localhost:5672/" )
10+ failOnError (err , "failed to connect to RabbitMQ" )
11+ defer conn .Close ()
12+
13+ ch , err := conn .Channel ()
14+ failOnError (err , "Failed to open a chanel" )
15+ defer ch .Close ()
16+
17+ q , err := ch .QueueDeclare (
18+ "hello" ,
19+ false ,
20+ false ,
21+ false ,
22+ false ,
23+ nil ,
24+ )
25+
26+ failOnError (err , "Failed to declare a queue" )
27+
28+ msgs , err := ch .Consume (
29+ q .Name ,
30+ "" ,
31+ true ,
32+ false ,
33+ false ,
34+ false ,
35+ nil ,
36+ )
37+
38+ failOnError (err , "Failed to register a consumer" )
39+ var forever chan struct {}
40+
41+ go func () {
42+ for d := range msgs {
43+ log .Printf ("Received a message: %s" , d .Body )
44+ }
45+ }()
46+ log .Printf ("[*] Waiting for messages. To exit press CTRL + C " )
47+ <- forever
48+ }
49+
50+ func failOnError (err error , msg string ) {
51+ if err != nil {
52+ log .Fatal ("%s: %s" , msg , err )
53+ }
54+ }
Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ "context"
5+ amqp "github.com/rabbitmq/amqp091-go"
6+ "log"
7+ "time"
8+ )
9+
10+ func main () {
11+ conn , err := amqp .Dial ("amqp://guest:guest@localhost:5672/" )
12+ failOnError (err , "failed to connect to RabbitMQ" )
13+
14+ defer conn .Close ()
15+
16+ ch , err := conn .Channel ()
17+ failOnError (err , "Failed to open a chanel" )
18+ defer ch .Close ()
19+
20+ q , err := ch .QueueDeclare (
21+ "hello" ,
22+ false ,
23+ false ,
24+ false ,
25+ false ,
26+ nil ,
27+ )
28+
29+ failOnError (err , "Failed to declare a queue" )
30+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
31+
32+ defer cancel ()
33+
34+ body := "Hello World!"
35+ err = ch .PublishWithContext (
36+ ctx ,
37+ "" ,
38+ q .Name ,
39+ false ,
40+ false ,
41+ amqp.Publishing {
42+ ContentType : "text/plain" ,
43+ Body : []byte (body ),
44+ },
45+ )
46+ failOnError (err , "Failed to publish a message" )
47+ log .Printf ("[x] Sent %s\n " , body )
48+ }
49+
50+ func failOnError (err error , msg string ) {
51+ if err != nil {
52+ log .Fatal ("%s: %s" , msg , err )
53+ }
54+ }
You can’t perform that action at this time.
0 commit comments