Hi Martin,

Just to be sure: did you enable DLQ for non persistent message ?

I'm splitted about that: as a message in DLQ never expired, I would
expect that it would stay forever (as DLQ requires a "manual" action).
However, I see your point: as the original message is non-persistent,
what would it change in DLQ.

I think it makes sense to have this configuration (on the DLQ strategy)
allowing to match the two use cases.

Can you please create a Jira and assign it to me ? I will do the
improvement.

Regards
JB

On 03/02/2020 20:50, Martin Lichtin wrote:
> Hi JB, I have to disagree with this view.
> 
> The JMS delivery mode should be honoured by ActiveMQ, it should not
> 'improve' or change the delivery mode in any way. There's no reason such
> a message should survive a broker re-start, in fact I'm pretty sure most
> everyone will expect to loose such a message.
> 
> In my case it is perfectly reasonable for a non-persistent message to go
> to DLQ, having a server-side retry configured, to pass the message to
> another consumer that can perhaps handle the message. There's no reason
> for DLQ to have 'stronger' persistence requirements.
> 
> If the current behaviour makes sense for anyone, then please at least
> can we make it configurable? I'm happy to help.
> 
> - Martin
> 
> 
> On 30.01.2020 17:41, Jean-Baptiste Onofré wrote:
>> Hi,
>>
>> If you enable DLQ to non-persistent message (it's disabled by default),
>> then, IMHO, any message stored in DLQ should survive to broker restart
>> (else it's not really a DLQ).
>> Again, as non-persistent messages are not supposed to go in DLQ. To send
>> the non-persistent messages to DLQ, you have to use for instance:
>>
>>   <sharedDeadLetterStrategy processNonPersistent="true" />
>>
>> In that case, it makes sense to "store" the message persistently in
>> the DLQ.
>>
>> Regards
>> JB
>>
>> On 30/01/2020 17:35, Martin Lichtin wrote:
>>> Can somone help me understand why a non-persistent message is
>>> "converted" into a persistent message on entering DLQ?
>>> It happens in RegionBroker, around line 733:
>>>
>>>                              if (!message.isPersistent()) {
>>>                                  message.setPersistent(true);
>>> message.setProperty("originalDeliveryMode", "NON_PERSISTENT");
>>>                              }
>>>
>>> I'm puzzled as to why this would make sense.
>>>
>>> A non-persistent message, even if configured to use DLQ, should stay
>>> non-persistent, i.e. not survive broker restarts.
>>>
>>> - Martin
>>>

-- 
Jean-Baptiste Onofré
jbono...@apache.org
http://blog.nanthrax.net
Talend - http://www.talend.com

Reply via email to