I am currently using the Quarkus Solace JCSMP Messaging Connector and am facing an issue with message retry and DMQ handling.
My setup is as follows:
-
Messages are consumed from a Solace broker.
-
When an error occurs during processing, I NACK the message and rely on Solace to handle retries.
-
The queue is configured with max redelivery = 3 and redelivery delay = 1s.
-
After the retry limit is exceeded, I expect the message to be sent to the Dead Message Queue (DMQ).
However, Solace does not send the message to the DMQ. Instead, the message is simply discarded.
After checking Solace documentation and some sample code, I found that messages must be marked as DMQ-eligible when they are sent. I tried to find the correct way to configure this but couldn’t get it working.
So far, I found this configuration for consumers:
mp.messaging.incoming.my-queue.consumer.error.message.dmq-eligible=true
However:
-
I cannot find a clear configuration for producers to mark messages as DMQ-eligible.
-
I also do not see any relevant option in
SolaceOutboundMetadatarelated to DMQ.
It feels like I’m missing some important configuration or concept.
Could anyone explain:
-
How to correctly configure DMQ eligibility when using Quarkus Solace JCSMP?
-
Whether DMQ eligibility must be set on the producer side, consumer side, or both?
-
What the recommended approach is to ensure messages are sent to the DMQ after max retries?
References I’ve checked:
- Quarkus Solace
- solace-quarkus/quarkus-solace-jcsmp-messaging-connector at main · SolaceProducts/solace-quarkus · GitHub
Thank you for your help.