You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Илья Шипицин <ch...@gmail.com> on 2018/04/03 13:22:46 UTC

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 = <?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

Re: expired messages --> DLQ ? (when expiration=0)

Posted by Илья Шипицин <ch...@gmail.com>.
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 <tb...@alumni.duke.edu>:

> 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 Илья Шипицин <ch...@gmail.com> 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 <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, Илья Шипицин <ch...@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
> > > >
> > >
> >
>

Re: expired messages --> DLQ ? (when expiration=0)

Posted by Tim Bain <tb...@alumni.duke.edu>.
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 Илья Шипицин <ch...@gmail.com> 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 <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, Илья Шипицин <ch...@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
> > >
> >
>

Re: expired messages --> DLQ ? (when expiration=0)

Posted by Илья Шипицин <ch...@gmail.com>.
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, Илья Шипицин <ch...@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
> >
>

Re: expired messages --> DLQ ? (when expiration=0)

Posted by 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, Илья Шипицин <ch...@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
>