@@ -50,76 +50,15 @@ func (c *Consumer) Connect() error {
5050
5151// Consume consumes messages from RabbitMQ
5252func (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