簡體   English   中英

如何使用 JMS 隊列將消息發送到特定接收器

[英]How to send Message to particular Receiver using JMS Queue

是否可以使用 JMS Queue(HornetQ) 向特定接收者發送消息?

在這么多接收器中,我希望在 Linux 操作系統上運行的接收器接收某些消息。

每一個建議都是appriciated。

謝謝。

您可以使用Message.setObjectProperty(String, Object)設置消息屬性,然后讓您的消費者 select 使用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.

示例中的接收器將忽略(它們會將 go 發送到其他接收器)所有與選擇器不匹配的消息。 在這種情況下,該消費者將忽略“OS”屬性不是“LINUX”的所有消息。

您可以設置 JMS 消息的屬性: http://download.oracle.com/javaee/1.4/api/javax/jms/TextMessage.html.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 屬性過濾消息

您可以在消費者端使用 JMS 選擇器來查找符合特定條件的消息。

不確定我是否遺漏了什么,您可以通過擁有多個隊列來保持簡單——特定於每個平台,然后基於 linux 的消費者可以單獨收聽 linux 特定隊列。 現在您的挑戰可能是將消息從生產者端路由到適當的隊列,如果路由基於消息的某些屬性,那應該相當容易?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM