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 >