10

ローカル以外で ActiveMQ を使用する方法がわかりません。
メッセージを交換する必要がある 2 台のマシンがあるとします。
マシン上で ActiveMQ ブローカーを起動します。

> ~/bin/activemq

次のようなものを使用します。

    javax.naming.Context ctx = new InitialContext();

    TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("connectionFactory");
    conn = factory.createTopicConnection();

    TopicSession session = conn.createTopicSession(false,TopicSession.AUTO_ACKNOWLEDGE);
    Topic topic = null;
    try{
        topic = (Topic)ctx.lookup("MyTopic");
        System.out.println("MyTopic was found");
    }catch(NameNotFoundException nnfe){
        topic = session.createTopic("MyTopic");
        System.out.println("MyTopic was created");
    }
    TextMessage textMessage = session.createTextMessage();
    TopicPublisher publisher = session.createPublisher(topic);
    conn.start();

    textMessage.setText("My topic message number");
    publisher.publish(textMessage);
    System.out.println("sendMessage2topic");

私が持っているjndi.propertiesの場所:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616

しかし、このトピックをサブスクライブするには、他のマシンで何を作成すればよいでしょうか? 2 番目のマシンに 2 番目のローカル ActiveMQ ブローカーを作成し、最初のマシンにあるリモート トピックをサブスクライブする方法を教えてください。

4

3 に答える 3

7

localhost:61616 は、activeMQ をループバック (127.0.0.1) インターフェースのみでリッスンさせます。代わりに、マシンの IP または 0.0.0.0 を使用してください。

于 2010-02-23T13:53:14.853 に答える
6

この線...

java.naming.provider.url = tcp://localhost:61616

connectionFactory...ループバック インターフェイスに接続するように指示します。ここで、リモートブローカーのアドレスを指定できます。

このような場合、スニペットはリモート ブローカーにメッセージを送信します。ここで、登録されたサブスクライバー (ローカルとリモートの両方) にメッセージを配布するのはブローカー次第です。

このシナリオでは、ブローカーは作成されません (ローカルでもリモートでも)。既存のブローカーに接続するだけです。もちろん、ローカル ブローカを作成して、メッセージをリモート ブローカにルーティングするように設定することもできます (たとえば、静的/動的ネットワーク トランスポートまたはピア ネットワーク トランスポート プロトコルを介して行うことができます)。ActiveMQ は多くの統合トポロジーとパターンを提供しますが、最初に実際に達成したいことを定義する必要があります。

于 2010-02-27T16:27:14.977 に答える
1

以下のようなものを使用する必要があります。ipaddress を、使用するターゲット ip に置き換えます

java.naming.provider.url = tcp://172.16.202.168:61616
于 2013-06-11T10:50:09.617 に答える