MQ Process - Process Once and Dead Letter if Issue

I’m trying to fully understand the entire mq process. I’d like to be able to publish a message to a queue and then just process it one time without any response messaging except if there is a failure. It is my understanding that if the handler returns nothing/null there should be no response to the outq? In addition if there is an error, it gets retried and then at some point after n attemps (configurable) it gets sent to the dead letter que (dlq). Is this correct? I’m trying to eliminate messages going to outq and inq (2nd time) as it isn’t needed.

Is there a way to setup a handler for the dead letter queue or does that need to be polled manually? In our use case some missing data from an external system needs to be managed so once that code is in place we just need to put them back in the inq or remove them if we aren’t going to process them via the system. Trying to determine if we can have a handler do this or not?

Lastly, the register handler takes an action for exceptions. Does this action impact the dead letter queueing?

 (hnd, msg, ex)  => {  // do something like email alerts // }

Any other thoughts or pointers welcome.

There’s no handler to handle failed messages sent to the DLQ, you’d use the MQ Clients to read from it manually. Given they’ve failed after a retry, there’s something wrong with either the message or the Service impl so it would require some manual handling to process the message correctly.

Yes the message error handler takes over the default implementation for handling messages with errors.