Ilya,

The output you're seeing is from the message as it's being put onto the
DLQ. (destination=queue://DLQ.EdiInbound") This means that it has already
passed through the set of transformations that occur in
orc.apache.activemq.broker.region.RegionBroker.sendToDeadLetterQueue() and
RegionBroker.stampAsExpired(), which set the originalExpiration property to
the value of expiration on the original message and then set expiration to
the DLQ's expiration value (i.e. 0).

What that means is that although you think you've set expiration to 0, you
haven't successfully done that; you can see from both the
originalExpiration property and the message of the Throwable in the
dlqDeliveryFailureCause that the message's expiration value was 1522739054119,
which is why this message got expired to the DLQ.

So if you're attempting to disable message expiration for this message, you
need to look at how you're doing that to figure out what you're doing
that's not properly configured.
http://activemq.apache.org/how-do-i-set-the-message-expiration.html might
be relevant, if you haven't already seen it.

Tim

On Tue, Apr 3, 2018 at 7:22 AM, Илья Шипицин <chipits...@gmail.com> wrote:

> hello,
>
> activemq.log:2018-04-03 10:42:57,961 | INFO  | preProcessDispatch:
> MessageDispatch {commandId = 0, responseRequired = false, consumerId =
> ID:dd-amq-app01.
> sd.kontur.ru-32887-1522738593874-4:1:1:1, destination =
> queue://DLQ.EdiInbound, message = ActiveMQTextMessage {commandId = 5,
> responseRequired = true, mes
> sageId = ID:vm-dc-test8-50009-636572273611169908-4:1826:1:1:1,
> originalDestination = queue://EdiInbound, originalTransactionId = null,
> producerId = ID:vm-
> dc-test8-50009-636572273611169908-4:1826:1:1, destination =
> queue://DLQ.EdiInbound, transactionId = null, expiration = 0, timestamp =
> 1522739053119, arriv
> al = 0, brokerInTime = 1522739055628, brokerOutTime = 1522739053126,
> correlationId = null, replyTo = null, persistent = true, type = null,
> priority = 4, g
> roupID = null, groupSequence = 0, targetConsumerId = null, compressed =
> false, userID = null, content =
> org.apache.activemq.util.ByteSequence@552349c1, ma
> rshalledProperties = null, dataStructure = null, redeliveryCounter = 0,
> size = 1263, properties = {originalExpiration=1522739054119,
> EDI_CORRELATION_ID=21
> 008, EDI_FILE_NAME=15.xml, EDI_DOC_TYPE=EDI_DOC_TYPE,
> BrokerPath=localhost,localhost,
> dlqDeliveryFailureCause=java.lang.Throwable: Message Expired. Expira
> tion:1522739054119}, readOnlyProperties = false, readOnlyBody = false,
> droppable = false, jmsXGroupFirstForConsumer = false, text = <?xml
> version="1.0" en
> coding="UTF-8"?>
>
>
> as I can see, "originalDestination = queue://EdiInbound" - so, we tried to
> deliver to EdiInbound
> expiration is 0 (we did not set it, it's default): expiration = 0
>
> as we can see, message was expired and delivered to DLQ. it was not
> intended behaviour.
> also, documentation states that expiration = 0 means "no expiration"
>
>
> please, explain me. I do not understand how expiration=0 lead to DLQ
> actually.
>
> configuration is pretty generic, nothing special. I'll provide
> configuration if needed (also, from documentation I read that expiration=0
> is not configuration dependent)
>
> we run 5.15.3
>
> cheers,
> Ilya Shipitsin
>

Reply via email to