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

Reply via email to