Re: expired messages --> DLQ ? (when expiration=0)
well, before submitting issue, I'd like to ask if there's already a possibility to configure that way. ok, got your point, will open a request 2018-04-04 17:29 GMT+05:00 Tim Bain: > If you think that message expiration should be checked when the publisher > publishes the message, you can submit an enhancement request in JIRA for > it. > > Tim > > On Tue, Apr 3, 2018, 11:15 PM Илья Шипицин wrote: > > > 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 : > > > > > 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, Илья Шипицин > > 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 = > > > 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 > > > > > > > > > >
Re: expired messages --> DLQ ? (when expiration=0)
If you think that message expiration should be checked when the publisher publishes the message, you can submit an enhancement request in JIRA for it. Tim On Tue, Apr 3, 2018, 11:15 PM Илья Шипицинwrote: > 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 : > > > 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, Илья Шипицин > 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 = > > 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 > > > > > >
Re: expired messages --> DLQ ? (when expiration=0)
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: > 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, Илья Шипицин 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 = > 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 > > >
Re: expired messages --> DLQ ? (when expiration=0)
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, Илья Шипицин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 = 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 >
expired messages --> DLQ ? (when expiration=0)
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 = 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