0

2 つのアプリケーションでクラスター (ノード 1 & ノード 2) を実行しています。アプリ A とアプリ B。

  1. アプリ A は JMS キュー Q にメッセージを送信します (ノード 1 と 2 に分散されます)。
  2. アプリ B はキューからリッスンし、メッセージを処理して Q に送り返します (これも配布されます)。

だから私はそれが受信したのと同じノードにメッセージを送信するApp Bが必要です.どうすればこれを達成できますか?

コード/構成。どのように ?

前もって感謝します。

4

1 に答える 1

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();
    }
}
于 2013-10-01T09:12:23.917 に答える