47 lines
891 B
Go
47 lines
891 B
Go
// rabbitmq.go
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/rabbitmq/amqp091-go"
|
|
)
|
|
|
|
func ConnectRabbitMQ(cfg Config) (*amqp091.Connection, *amqp091.Channel, error) {
|
|
conn, err := amqp091.Dial(cfg.RabbitURL)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
ch, err := conn.Channel()
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
err = ch.Qos(1, 0, false) // Prefetch 1
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
_, err = ch.QueueDeclare(
|
|
cfg.QueueName,
|
|
true, // durable
|
|
false, // delete when unused
|
|
false, // exclusive
|
|
false, // no-wait
|
|
amqp091.Table{
|
|
"x-dead-letter-exchange": "optimize.images.dlx",
|
|
"x-dead-letter-routing-key": "file.uploaded.failed",
|
|
"x-delivery-limit": int32(3),
|
|
"x-queue-type": "quorum",
|
|
},
|
|
)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
log.Printf("🎧 Listening to queue: %s", cfg.QueueName)
|
|
|
|
return conn, ch, nil
|
|
}
|