The problem is that, when you resume the message delivery,
- If there is a message entering the queue: the broker will immediately send the pending messages to the consumer which is totally OK.
- But if no message enters the queue: the pending messages in the queue will not be sent to the consumers until the expiration checking is performed on the queue (which by default is 30 seconds and can be controlled by the expireMessagesPeriod attribute) and non-expired messages will be sent to the consumers afterwards.
Obviously we can change the expireMessagesPeriod to limit this delay, but when you need a milisec precision, performing the expiration check every milisec will not make sense.
How is it possible to force the queue to start sending messages immediately after resumption?