Как отправить сообщение определенному получателю, используя очередь JMS - PullRequest
11 голосов
/ 03 июня 2011

Можно ли отправить сообщение конкретному получателю, используя JMS Queue (HornetQ)?

Среди стольких получателей я хочу, чтобы получатель получал определенное сообщение, которое работают на ОС Linux.

Каждое предложение оценивается.

Спасибо.

Ответы [ 4 ]

20 голосов
/ 03 июня 2011

Вы можете установить свойство сообщения с помощью Message.setObjectProperty (String, Object) , а затем попросить своих потребителей выбрать сообщения, которые им интересны, используя Session.createConsumer (Destination, String)

Пример отправителя:

Message message = session.createMessage();
message.setObjectProperty("OS", "LINUX");
producer.send(message);

Пример получателя:

MessageConsumer consumer = session.createConsumer(destination, "OS = 'LINUX'");
//Use consumer to receive messages.

Получатель в этом примере будет игнорировать (они перейдут к другому получателю) все сообщения, которыене совпадают с селектором.В этом случае все сообщения, в которых свойство 'OS' не равно 'LINUX', будут игнорироваться этим потребителем.

4 голосов
/ 03 июня 2011

Вы можете установить свойства сообщения JMS: http://download.oracle.com/javaee/1.4/api/javax/jms/TextMessage.html и фильтровать сообщения на стороне клиента.Например, message.setStringProperty ("TARGET_OS", "LINUX") - у отправителя http://www.mkyong.com/java/how-to-detect-os-in-java-systemgetpropertyosname/ - обнаруживать ОС на приемниках и фильтровать сообщения с правильным свойством TARGET_OS

1 голос
/ 03 июня 2011

Вы можете использовать селекторы JMS на стороне потребителя для поиска сообщений, которые соответствуют определенным критериям.

0 голосов
/ 03 июня 2011

Не уверен, что если я что-то упустил, вы можете упростить задачу, имея несколько очередей - специфичных для каждой платформы, тогда потребители на основе Linux могут прослушивать только определенную очередь Linux.Теперь ваша задача, вероятно, будет заключаться в том, чтобы направлять сообщения в соответствующую очередь со стороны производителя, что должно быть довольно легко, если маршрутизация основана на каком-либо атрибуте сообщения?

...