Have just written a small app to read from our MSMQ dead letter queue, and re-send the messages. I have noticed however, that when the TimeToBeReceived expires the message is removed from the destination queue on the remote server and placed back in the sender's dead letter queue, where it came from before being re-sent. Is this normal, expected behaviour? I expected it to go into the destination DLQ upon expiry.
Thanks in advance.
Frank
Yes, this is normal. That behavior ensures that all the possible faults will go to one deadletter queue that an application on the sending box would be able to examine. Note that there is a different here between transactional amd non transactional messages: For non transactional, the receiver will send a message back to the sender once the timeout expires. For transactional, the message will actually stay on the sender ( marked as "unprocesed" in the outgoing queue) until received by the receiver or until moved to the deadletter queue. This way MSMQ makes sure that the message is not lost.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With