Hello.

Original messages globally (we already have some kind of messages that use
it) must not have a time to live. And I found no way to tell ActiveMQ to
add a time to live when a message is moved to a DLQ by a rollback of the
recipient process :I don't think we have to change the transaction handlers
in Camel contexts or Spring Boot applications to alter messages on rollback.

Thanks anyway.

Regards.


Le mar. 11 mars 2025 à 14:42, Mattern, Alex <alex.matt...@bbh.com.invalid>
a écrit :

> If you are just looking to trash old messages then use the timeToLive
> setting when producing messages on the DLQ.
> https://camel.apache.org/components/4.10.x/eips/message-expiration.html
>
> If you want a manually triggered process, then you can create a consumer
> application that consumes X number of messages, where X is specified on
> startup.
> --
> Alex
>
> -----Original Message-----
> From: Ephemeris Lappis <ephemeris.lap...@gmail.com>
> Sent: Tuesday, March 11, 2025 9:07 AM
> To: us...@camel.apache.org; users@activemq.apache.org
> Subject: [EXTERNAL SENDER:] Camel JMS consumer with dynamic selector to
> read ActiveMQ DLQueues
>
> Hello.
>
> I'm looking for a simple way to clean DLQ queues on our ActiveMQ brokers.
> Messages are moved to DLQ queues when some unexpected conditions lead
> consumers to fail. We've no automatic processing for DLQ messages that are
> only needed for diagnosis. Nevertheless, when the queues contain too many
> messages, the ActiveMQ console or alternative browsing tools are not able
> to handle them, and, by the way, thousands of messages are useless. This is
> why we're looking for a periodic cleaning. For example, we could remove all
> messages that are older than N days.
>
> A JMS selector can be used to check the JMSTimestamp is before a given
> time. But I can't find any way to write a route with a JMS 'from' statement
> that could evaluate something like : JMSTimestamp < NOW() - INTERVAL '7
> days'...
>
> I imagine that more complex solutions could be considered, consuming all
> the DLQ queues messages, and moving them to other queues with an expiration
> time, setting a policy to delete expired messages. But this is not our
> first choice...
>
> I've also searched for a way to force ActiveMQ to set an expiration time
> on all DLQ messages, but It seems it's not possible.
>
> Any ideas are welcome !
>
> Thanks in advance.
>
> Regards.
>
> *************************** IMPORTANT NOTE*****************************
> The opinions expressed in this message and/or any attachments are those of
> the author and not necessarily those of Brown Brothers Harriman & Co., its
> subsidiaries and affiliates ("BBH"). There is no guarantee that this
> message is either private or confidential, and it may have been altered by
> unauthorized sources without your or our knowledge. Nothing in the message
> is capable or intended to create any legally binding obligations on either
> party and it is not intended to provide legal advice. BBH accepts no
> responsibility for loss or damage from its use, including damage from virus.
>
> ******************************************************************************
>

Reply via email to