Skip to content

Commit f435c48

Browse files
Initial commit
0 parents  commit f435c48

File tree

5 files changed

+147
-0
lines changed

5 files changed

+147
-0
lines changed

docker-compose.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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"

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module github.com/chilly266futon/go-rabbitmq
2+
3+
go 1.22.1
4+
5+
require github.com/rabbitmq/amqp091-go v1.9.0

go.sum

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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=

receive/recieve.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
}

send/send.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
}

0 commit comments

Comments
 (0)