Kbase P7802: What is the best way to manage time to live of messages
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  10/4/2002 |
|
Solution ID: P7802
GOAL:
What is the best way to manage time to live of messages
FACT(s) (Environment):
SonicMQ 4.0
FIX:
The only way to get rid of expired message in the client's
output queue is to acknowledge them after having them received. The reason for
that behavior is that the session's recovery method needs to cause the broker
to redeliver received but not acknowledged messages. According to the JMS spec.
the JMS vendor has only to make sure that a client
cannot get overloaded that way with expired but not acknowledged messages. With
SonicMQ the session recovery method causes the broker to put all delivered but
not acknowledged messages
back into the queue from where than using the QUEUE_CLEANUP_INTERVAL the broker
will remove expired messages. If there is no message in the queue the client will not get overloaded and there is no need to drop a expired message which is already delivered to the client afterwards. However if a message is immediately redelivered to the client because there is still space in the clients output queue than the broker will not have a chance to clean it up as well.