TTL - Message Expiry check on the queue..
If TTL on a message is set to 180secs (say), wondering when the expiry is checked and removal of expired events occur?
Just curious how the following scenarios are handled:
a) If DMQ is enabled, the dequeue from current queue and enqueue on the DMQ has to occur at the exact time when the message expired, right?
b) If no DMQ, for a durable queue how long will the messages be held in the queue? The expiry check is automatic (back-ground ops) or triggered by some action (like request)?
Best Answer
-
Hi @giri,
Expiry checking is an asynchronous, background process, so it isn't triggered by anything external, such as a bind to a queue or an admin command. That should answer b).
For a), it's important to remember Solace's spool based architecture: the message data is held in an abstracted view of persistent storage called "the spool." Queues are a view of the spool: messages in a queue are actually stored as references to the original message. So when a message is "moved" from a queue to a DMQ, what's actually happening is the reference is deleted from the original queue and added to the DMQ. For our purposes, that's instantaneous.
Hope that helps!
0
Answers
-
Hi @giri,
Expiry checking is an asynchronous, background process, so it isn't triggered by anything external, such as a bind to a queue or an admin command. That should answer b).
For a), it's important to remember Solace's spool based architecture: the message data is held in an abstracted view of persistent storage called "the spool." Queues are a view of the spool: messages in a queue are actually stored as references to the original message. So when a message is "moved" from a queue to a DMQ, what's actually happening is the reference is deleted from the original queue and added to the DMQ. For our purposes, that's instantaneous.
Hope that helps!
0