[
https://issues.apache.org/jira/browse/ARTEMIS-2649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17056342#comment-17056342
]
Justin Bertram commented on ARTEMIS-2649:
-----------------------------------------
I've reproduced the issue you're seeing with a unit test of my own. Thanks for
providing those details. I'm working on a solution. In the mean-time you can
statically create a queue on the dead-letter address to ensure messages are not
lost.
bq. ...I think that one of the requirements should be that under no
circumstances, you can actually lose a message.
That is already a requirement. In fact, it's a general requirement of the
broker. However, bugs do happen. Thanks for testing and catching this one
before it was released.
For what it's worth I don't think the fix you proposed would be suitable
because it would reduce the flexibility of the dead-letter address since
messages would be sent directly to the fully-qualified dead-letter queue rather
than the address which would prevent any other consumers on the dead-letter
address from receiving those messages if they wanted. In short, it would
nullify the multicast nature of the dead-letter address.
> Auto-create DLQ message loss when moving messages between destinations
> ----------------------------------------------------------------------
>
> Key: ARTEMIS-2649
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2649
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Components: Broker
> Affects Versions: 2.12.0
> Environment: Centos 7 container in OKD with Java 8.
> Reporter: Piotr Klimczak
> Priority: Major
>
> [~jbertram], first of all thanks a lot for ARTEMIS-2587 implementation.
> This was a must for me to switch to Artemis.
> In past I have even tried to implement it in Artermis, but having no
> previous experience with it, only with your PR I understood how nicely and
> easily it can be implemented and how much I have overcomplicated it.
> So I am testing 2.12.0 snapshot as I am really interested in work done under
> ARTEMIS-2587.
> I am connecting using open wire protocol using camel-jms component, having
> replaced old AMQ5 with Artermis.
> On failed consumption, I can see queue being created under DLQ address with
> multicast and filter _AMQ_ORIG_ADDRESS = 'some.queue'.
> However it is empty and message is lost.
> Reproduction scenario:
> # Sending message to address A
> # Moving message from A queue to B using web console move function
> # Consuming from B and failing consumption
> Observed state:
> # Queue is being created
> # Message is lost and logs are not indicating anything
> As a result this message being moved from A to be B queue, the header
> "_AMQ_ORIG_ADDRESS" has value "A" instead of "B" and therefore it does not
> match the filter "B" and is getting lost.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)