Best Practices for handling message processing failures (Go API)

Hi @Lunastryke ,
For starters, using DMQ usually means applying expiry/TTL on the message, or max redelivery count set. Leah did a great post on this subject here: https://solace.com/blog/pubsub-message-handling-features-dead-message-queues/
In this blog, the approach is not to retry within the application, but just focus on single event processing and ACK only when the process completed successfully, and leave the retry mechanism to the broker. If you don’t ACK, that message will eventually[1] be put back on the queue and gets redelivered to a consumer application.
You can also do a retry loop within your function call as an application logic indefinitely or up to certain times. Again, you’ll only ACK that message if you succeed with that API call you needed.
So it depends on how you’d like to do (and maintain) the retry :slight_smile: how many times, what intervals, order of processing, etc.
Ari

[1] ClientAck behavior in case ack is not sent (timeout) — Solace Community