I am evaluating STOPM v1.2 protocol implementation. In our use case STOMP message consumers have to call an unreliable third party dependency, and this call can fail from time to time. The subscription is set in the ack:client-individual mode.
When my consumer is set to not send any ACKs in case of external call failure, then the messages are redelivered to another consumer only when the broker connection to the first consumer dies. This is manageable, but not very practical either. I did assume that if the consumer sends NACKs if the external call fails, then the message will be redelivered to another consumer after the <redelivery-delay> time. Unfortunately, if I send a NACK from the consumer, then it looks like the request is simply dropped. Is it intended? Can I configure Artemis to try to redeliver messages that have been NACK'ed ? My <address-settings> looks like this: <address-settings> <!--default for catch all--> <address-setting match="#"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <redistribution-delay>0</redistribution-delay> <max-delivery-attempts>-1</max-delivery-attempts> <!-- with -1 only the global-max-size is in use for limiting --> <max-size-bytes>-1</max-size-bytes> <message-counter-history-day-limit>10</message-counter-history-day-limit> <address-full-policy>PAGE</address-full-policy> <send-to-dla-on-no-route>false</send-to-dla-on-no-route> <auto-create-jms-queues>true</auto-create-jms-queues> <auto-delete-jms-queues>false</auto-delete-jms-queues> </address-setting> </address-settings> I can paste the whole broker.xml if necessary