2015-08-05 3 views
0

Я ищу возможность в любой из более популярных очередей сообщений (AMPQ, RabbitMQ, ActiveMQ и т. Д.), Чтобы условно задержать доставку сообщения.JMS Задержка доставки на основе условных переменных

Например:

System A sends a message(foo, condition = bar.x > 1); 
System B sends a message(bar, x = 2) 

Поскольку сообщение о системе B удовлетворяет условию, установленное на сообщение для системы A, сообщение разблокировано и доставлено.

Существуют ли такие стратегии?

ответ

0

Сортировка, да, с RabbitMQ.

Вам нужно две вещи:

  1. код, который проверяет условие - ваш код, не RabbitMQ код.
  2. Отложенный Обмен сообщениями плагин https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/

RabbitMQ не имеет возможности обрабатывать логические высказывания или код. Но вы уже пишете код, поэтому можете легко сделать это в своем коде.

Если условие истинно, отправьте сообщение на Отложенный обмен сообщениями. Если это неверно, отправьте свое сообщение на обычный обмен.