mirror of
https://github.com/marcel-dempers/docker-development-youtube-series.git
synced 2025-06-06 17:01:30 +00:00
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
package main
|
|
|
|
|
|
import (
|
|
"fmt"
|
|
log "github.com/sirupsen/logrus"
|
|
"github.com/streadway/amqp"
|
|
"os"
|
|
)
|
|
|
|
var rabbit_host = os.Getenv("RABBIT_HOST")
|
|
var rabbit_port = os.Getenv("RABBIT_PORT")
|
|
var rabbit_user = os.Getenv("RABBIT_USERNAME")
|
|
var rabbit_password = os.Getenv("RABBIT_PASSWORD")
|
|
|
|
func main() {
|
|
consume()
|
|
}
|
|
|
|
func consume() {
|
|
|
|
conn, err := amqp.Dial("amqp://" + rabbit_user + ":" +rabbit_password + "@" + rabbit_host + ":" + rabbit_port +"/")
|
|
|
|
if err != nil {
|
|
log.Fatalf("%s: %s", "Failed to connect to RabbitMQ", err)
|
|
}
|
|
|
|
ch, err := conn.Channel()
|
|
|
|
if err != nil {
|
|
log.Fatalf("%s: %s", "Failed to open a channel", err)
|
|
}
|
|
|
|
q, err := ch.QueueDeclare(
|
|
"publisher", // name
|
|
false, // durable
|
|
false, // delete when unused
|
|
false, // exclusive
|
|
false, // no-wait
|
|
nil, // arguments
|
|
)
|
|
|
|
if err != nil {
|
|
log.Fatalf("%s: %s", "Failed to declare a queue", err)
|
|
}
|
|
|
|
fmt.Println("Channel and Queue established")
|
|
|
|
defer conn.Close()
|
|
defer ch.Close()
|
|
|
|
msgs, err := ch.Consume(
|
|
q.Name, // queue
|
|
"", // consumer
|
|
false, // auto-ack
|
|
false, // exclusive
|
|
false, // no-local
|
|
false, // no-wait
|
|
nil, // args
|
|
)
|
|
|
|
if err != nil {
|
|
log.Fatalf("%s: %s", "Failed to register consumer", err)
|
|
}
|
|
|
|
forever := make(chan bool)
|
|
|
|
go func() {
|
|
for d := range msgs {
|
|
log.Printf("Received a message: %s", d.Body)
|
|
|
|
d.Ack(false)
|
|
}
|
|
}()
|
|
|
|
fmt.Println("Running...")
|
|
<-forever
|
|
} |