Skip to content

Commit da419b0

Browse files
committed
feat: remove dead letter queue implementation
1 parent 64026d1 commit da419b0

File tree

1 file changed

+14
-69
lines changed

1 file changed

+14
-69
lines changed

pkg/queue/rabbitmq/rabbitmq.go

Lines changed: 14 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -50,76 +50,15 @@ func (c *Consumer) Connect() error {
5050

5151
// Consume consumes messages from RabbitMQ
5252
func (c *Consumer) Consume(queueName string, handler func(msg []byte) error) error {
53-
dlExchange := "dlx.exchange"
54-
dlQueue := queueName + ".dlx"
55-
56-
err := c.channel.ExchangeDeclare(
57-
dlExchange, // name of the exchange
58-
"direct", // type
59-
true, // durable
60-
false, // auto-deleted
61-
false, // internal
62-
false, // no-wait
63-
nil, // arguments
64-
)
65-
if err != nil {
66-
return fmt.Errorf("error declaring the DLX: %w", err)
67-
}
68-
69-
_, err = c.channel.QueueDeclare(
70-
dlQueue, // name of the queue
71-
true, // durable
72-
false, // delete when unused
73-
false, // exclusive
74-
false, // no-wait
75-
nil, // arguments
76-
)
77-
if err != nil {
78-
return fmt.Errorf("error declaring the DLQ: %w", err)
79-
}
80-
81-
err = c.channel.QueueBind(
82-
dlQueue, // queue name
83-
queueName, // routing key
84-
dlExchange, // exchange
85-
false,
86-
nil,
87-
)
88-
if err != nil {
89-
return fmt.Errorf("error binding the DLQ: %w", err)
90-
}
91-
92-
args := amqp.Table{
93-
"x-dead-letter-exchange": dlExchange,
94-
"x-dead-letter-routing-key": queueName,
95-
}
96-
97-
_, err = c.channel.QueueDeclare(
98-
queueName, // name of the queue
99-
true, // durable
100-
false, // delete when unused
101-
false, // exclusive
102-
false, // no-wait
103-
args, // arguments for dead-lettering
104-
)
105-
if err != nil {
106-
return fmt.Errorf("error declaring the main queue: %w", err)
107-
}
108-
10953
slog.Debug("Starting to consume messages from RabbitMQ", "queueName", queueName)
110-
111-
return c.startConsuming(queueName, handler)
112-
}
113-
114-
func (c *Consumer) startConsuming(queueName string, handler func(msg []byte) error) error {
11554
msgs, err := c.channel.Consume(
11655
queueName,
117-
"", // Consumer tag - Identifier for the consumer
118-
false, // Auto-Acknowledge, set to false for manual ack
119-
false, // Exclusive
120-
false, // No-local
121-
false, // No-wait
122-
nil, // Arguments
56+
"konsume", // Consumer tag - Identifier for the consumer
57+
false, // Auto-Acknowledge, set to false for manual ack
58+
false, // Exclusive
59+
false, // No-local
60+
false, // No-wait
61+
nil, // Arguments
12362
)
12463
if err != nil {
12564
return fmt.Errorf("error starting to consume: %w", err)
@@ -130,9 +69,15 @@ func (c *Consumer) startConsuming(queueName string, handler func(msg []byte) err
13069
err = handler(d.Body)
13170
if err != nil {
13271
slog.Error("Failed to process message sending to dead letter exchange", "message", string(d.Body), "error", err)
133-
d.Nack(false, false)
72+
err = d.Nack(false, false)
73+
if err != nil {
74+
slog.Error("Failed to nack the message", "error", err)
75+
}
13476
} else {
135-
d.Ack(false)
77+
err = d.Ack(false)
78+
if err != nil {
79+
slog.Error("Failed to ack the message", "error", err)
80+
}
13681
}
13782
}
13883
}()

0 commit comments

Comments
 (0)