Best Practices for handling message processing failures (Go API)

Hi @arih ,
Thanks for the response. So from what i understand is that the broker will handle any redelivery due to exceptions within the application (i.e. the application crashed mid processing and failed to ack).
If within the handler i encounter any failed operations such as an API call and want to retry the call after a certain amount of time, this should be handled within the handler code. If at the end of the handler I have decided that this message has been successfully processed, I will ACK it.
However, what happens if after all my retries I decided that the message cannot be successfully processed? Can i simply call publish( ) to publish the event to a DMQ ?