minio-worker-go/rabbitmq.go
2025-04-27 23:00:52 +03:00

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
}