Tim, thank you for your investigation (looks like our client is buggy, we'll look at it). besides that, doesn't it look strange, accept message and drop it right away ? is there a possibility to reject such messages ? it will inform client in a better way
2018-04-04 9:12 GMT+05:00 Tim Bain <tb...@alumni.duke.edu>: > 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 > > >