пятница, 17 августа 2012 г.

Отложенная доставка JMS сообщений в HornetQ

Иногда при обработке JMS сообщения возникла ситуация, когда нужно повторить операцию через какое-то время. Можно вместо того, чтобы висеть в Thread.sleep(), занимая ценные системные ресурсы, просто повторно послать сообщение обратно в очередь, указав время, когда его следует начать обрабатывать.
Стандарт JMS никак не регламентирует возможность доставки сообщений с определенной задержкой, тем не менее, поскольку это весьма полезная возможность, многие производители включают ее в реализацию.
Для HornetQ произвести задержку в доставке сообщения можно просто установив нужное значение в свойство _HQ_SCHED_DELIVERY (или Message.HDR_SCHEDULED_DELIVERY_TIME)
// задержка в 5 секунд относительно текущего момента.
message.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000);
Источники:
HornetQ User Manual
Sending delayed JMS Messages

Комментариев нет:

Отправить комментарий