You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Jon Harper (JIRA)" <ji...@apache.org> on 2018/08/23 17:34:00 UTC
[jira] [Created] (AMQ-7042) reduce number of retries when
nonBlockingRedelivery is true
Jon Harper created AMQ-7042:
-------------------------------
Summary: reduce number of retries when nonBlockingRedelivery is true
Key: AMQ-7042
URL: https://issues.apache.org/jira/browse/AMQ-7042
Project: ActiveMQ
Issue Type: New Feature
Reporter: Jon Harper
It might be useful to have a global redelivery delay that is to reduce the number of retries in the case of a sporadic failures that affects all messages. This way you would have the following sequence of events where F means a failure and S success
{noformat}
# with separate redelivery times
FFFFF FFFFF FFFFF SSSSS
# with initial redelivery replaced by a global value
FFFFF F F SSSSS
# ^ first msg | |
# ^ second msg |
# ^ msg 3,4,5,1,2
{noformat}
But this means that the redelivery time of a message can not be computed at the time the message is handled (because for example this would reschedule the 5th message in a very long time immediatly). Instead, you either have to implement a mechanism to retry messages before their schedule, or schedule messages like in the first case and then if the last message was rollbacked, don't process them and reschedule according to the global time.
Note that due to AMQ-5730, the current system (at least until activemq 5.15.5) is broken and has the following behavior:
{noformat}
# buggy behavior until at least actiemq 3.15.5
FFFFF F F F |
# ^ first msg | |
# ^ second msg |
# ^ would work here
# the next messages have been scheduled in a very long time
# even though the failure period was really short
# they are basically lost (limited by maxredeliverydelay) until
# the consumer is stopped and another consumer processes them
{noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)