I have a queue Q1 which has backout queue as QB and backout threshold as 3. I'm working on various possibilities of handling poison messages so I have made my application throw exception whenever I read a message from the queue and keep polling the queue. Depth of Q1 is 15, QB is 5 and DLQ is 5. For first scenario, I input 7 messages into Q1 and started the application. As expected, the each message was rolled back to the queue and moved to the backout queue when backout count is 3. During sixth message, since QB is full, the message moves to DLQ and as do the seventh one. Works charmingly.
For the second scenario where I need to know what will happen when both backout queue and DLQ is full, I input 12 messages and started the application, for first 10 messages everything works as expected, 5 in backout and 5 in DLQ. For the next, it throws DLQ is full which is obvious.
But what I can observe in the MQ explorer is, the 12 messages just keep on looping between Q1, QB and DLQ infinitely and when I myself stopped the application, all the messages end up in the Q1 as like before I started the application.
Completely confused, googled a lot but found nothing similar to this.
Can anyone point out what I'm doing wrong or what piece is missing in this puzzle.
Thanks in advance.