Hi J P- Your consumer code needs to handle a poison-pill message by producing the message back to a DLQ, or dropping it. With infinite redeliveries, the message will always be dispatched from the broker to that consumer.
-Matt > On Aug 31, 2021, at 2:55 AM, J P <[email protected]> wrote: > > I also just realized... another issue related to this.... > > If a single message is failing due to some invalid contents in the msg > ("poison pill" that will never succeed), > since failing+retrying messages are not visible in the console, > how can you remove it from the queue, so it doesn't > block all subsequent messages? > > > > On Tue, Aug 31, 2021 at 1:05 AM J P <[email protected]> wrote: > >> >> We have an ActiveMQ instance, where a client is consuming from a >> jms-queue, >> reading some values from the msg and using them as parameters to an >> API-call. >> >> The order of the msgs are important, so in case of a >> failure (typically, the API called is temporarily down for a while), >> I want all msgs to REMAIN in the queue and the client >> should just try resend them until the processing succeeds, >> so I have set >> maximumRedeliveries="-1" >> redeliveryDelay="5000" >> for unlimited redeliveries. >> >> What I notice while testing, though, is that even though the API is down >> (i.e. message processing is failing, and messages are getting queued up), >> the ActiveMQ console is still showing 0 messages in the queue. >> >> The "Messages Enqueued/Dequeued" are increasing, >> and I can also confirm from the logs that messages >> are actually failing and being re-sent as expected. >> Also, if I shutdown everything, and restart ActiveMQ without restarting >> the consumer, the messages re-appear in the console. >> >> But for monitoring purposes, I would just like to DETECT this situation >> that the message backlog is growing and not getting consumed. >> >> How can I see the actual backlog/length of the >> failed-message queue (even though the console shows 0) in such a situation? >> >> >>
