Hi!
First of all, I don't have any logs of the event but was able to reproduce
it frequently or actually always. In ActiveMQ Artemis 2.16.X (running in a
pod in podman on a wsl2 ubuntu 20.04) is there a problem when having
multiple queues in an address and a microservice with two consumers
consuming and nacking messages? The problem I'm finding is that when a nack
is sent back from one of the consumers on either queue, I use the
address::queue to access a specific queue, the auto created DLQ.<address>
is created but the queue has no messages on it like it usually has when
only one queue exists on the address. The big DLQ queue has the message,
but the filter that usually assigns the nacked message to the auto created
multicast queue doesn't seem to understand what to do even though the
nacked message contains the original destination queue and address.
I found two workarounds and both don't feel that great but they do the jobb
I think. First is to specify the dead-letter-address in the broker.xml with
the value DLQ::DLQ.<address> which kinda works.. kinda because it feels
like one message is lost into ciberspace, didn't study it that much since
my teammates choose to split the queues into different addresses instead
also looked like the first one to get nacked was missing, when the auto
create happens for the DLQ.<address> and the second was to use the first
fix but this time also precreating the DLQ.<address> in the DLQ address.

Specs of microservice
Quarkus 2.2.3
SmallRye Reactive Messaging (quarkus-smallrye-reactive-messaging-amqp)

Annotation used
@Channel("<channel-name>") on a string emitter.
@Incoming("incoming1")  on an annotated method with a Message<String> input.
@Incoming("incoming2")  annotated on a different method with a
Message<String> input.

Configuration in quarkus
mp.messaging.incoming.requests.connector=smallrye-amqp
mp.messaging.incoming1.requests.address=<address>::queue1
mp.messaging.incoming2.requests.failure-strategy=modified-failed
mp.messaging.incoming2.requests.connector=smallrye-amqp
mp.messaging.incoming2.requests.address=<address>::queue2
mp.messaging.incoming2.requests.failure-strategy=modified-failed

With kind regard
Erik

Reply via email to