Планирование сообщений / потребление в JMS на основе определенного времени
Мы используем IBM WebSphere MQ в качестве JMS-провайдера со Spring MDP (POJO, управляемый сообщениями).
Есть ли способ в JMS, где мы можем настроить связанные со временем свойства в сообщении, чтобы сообщение могло использоваться только в определенное определенное время?
Например, если я отправляю три сообщения в очередь M1, M2 и M3. Где я могу настроить свойство сообщения M2, скажем, в 3 часа ночи. И на стороне потребителя, потребитель может выбрать только это сообщение в 3 часа утра. Если время не определено, сообщения должны использоваться так, как это делает JMS Receiver.
2 ответа
Спецификация JMS 2.0 имеет определения Delivery Delay
, С помощью этой функции производитель сообщений может указать, что сообщение не должно доставляться до истечения указанного времени interval
, Сообщение будет доступно для доставки по истечении указанного времени. Но это может не помочь вам, так как вы хотите, чтобы сообщение использовалось в указанное время. Как правило, приложения для обмена сообщениями предназначены для приема сообщений, как только они становятся доступны поставщику сообщений.
Если вы хотите обрабатывать сообщения только в указанное время, вы можете создать еще одну очередь "queue_3am" и запланировать запуск программы чтения точно в 3 часа ночи.
Вариант заключается в том, чтобы установить метку времени в качестве свойства сообщения. Таким образом, одна очередь может содержать сообщения для обработки в разные моменты времени. Читатель может использовать селекторы сообщений только для получения релевантных сообщений.
Но вы должны использовать " таймфрейм получения сообщения", добавив две метки времени в качестве свойств сообщения, например, установите для окна значение 1 или 5 минут.
Получатель может использовать селектор сообщений: селектор - это условие, использующее свойства сообщения.
Посмотри на это