Particular / NServiceBus.RabbitMQ

RabbitMQ transport for NServiceBus
https://docs.particular.net/nservicebus/rabbitmq/
Other
89 stars 58 forks source link

Cannot apply recoverability policies when handler execution exceeds consumer ACK timeout leading to infinite message processing #927

Closed bording closed 2 years ago

bording commented 2 years ago

While #894 fixed the transport's connection recovery problems around the newly introduced consumer acknowledgement timeout, there is still a related problem.

Symptoms

When a handler runs longer than the timeout value, the message is requeued by the broker and the transport logs a warning but is unable to ACK the message due to the timeout. When this happens, the message will be retried until the handler completes quicker than the timeout. No configured recoverability policies will apply. In the extreme case when handler execution always takes longer than the timeout, the message undergoes infinite retries.

Who's affected

Affected are used who either:

Root cause

RabbitMQ broker introduced the ACK timeout after which a message cannot be ACKed by the client.

Workaround

A temporary workaround for the issue, if you are affected and can't upgrade immediately, is to extend the consumer timeout value.

Backported to

bording commented 2 years ago

Fixed by #1071 and #1096

bonieckimarcin commented 1 year ago

I think we have found an issue #1259 related to fixes made in #1096 or #1071