Description
message expiry processing in queue subscription when an standard ack is received will process the expired message even though the message has been processed by the consumer. This processing will place the message in the DLQ by default. End result, consumer has the message and DLQ has the message. Because this message was acked before it expired as seen by the consumer but after expiry as seen by the broker, it should not be sent to the DLQ. This holds for expiry checking that is done on receipt of an ACK.
If the reply is lost for some time, and the broker expires the inflight message, the ack will be ignored with a warn and normal expiry processing will ensue. In this case, the broker gets to expire the message completely before the consumer gets to reply.