是否可以使用JMS消息附加节点ID?

时间:2013-10-01 08:58:22

标签: java java-ee jms jboss7.x hornetq

我正在运行一个带有2个应用程序的集群(节点1和节点2)。 App A和App B。

  1. App A将消息发送到JMS队列Q(将在节点1和2之间分发)。
  2. App B将从队列中侦听,处理并将消息发送回Q(这也将被分发)。
  3. 所以我希望App B将消息发送到它收到的同一节点。我们如何实现这一目标?

    代码/配置。怎么样?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以根据要将其传递到的节点设置邮件的String属性。

        TextMessage textmsg1 = qs.createTextMessage();
        textmsg1.setStringProperty("SentToNode","Node1");

(如果它将每条消息传递给两个节点,那么你可以简单地让appB向两个节点发送消息,这是没有意义的,所以忽略了这种情况)。

现在在收听此队列的接收方端(您的应用B),您可以检索此属性并采取适当的措施。

@Override
public void onMessage(Message message) {
    try {
        count++;
        TextMessage msg = (TextMessage) message;
        System.out.println("Message Received " + msg.getText());
        System.out.println("Message received from " + msg.getStringProperty("SentToNode"));
        //now you can send the message to that node

    } catch (JMSException e) {
        e.printStackTrace();
    }
}