簡體   English   中英

如何在本地使用activemq?

[英]How can one use activemq not locally?

我無法理解如何在本地使用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

但是我應該在另一台機器上創建什么來訂閱這個主題? Shoul我在第二台機器上創建第二個本地ActiveMQ代理,以及如何訂閱第一台機器上的遠程主題???

localhost:61616只會使activeMQ偵聽環回(127.0.0.1)接口。 使用機器的IP或0.0.0.0代替。

這條線......

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

...告訴你的connectionFactory連接loopback接口。 您可以在此處指定遠程代理的地址。

在這種情況下,您的代碼段將向遠程代理發送消息。 現在,經紀人需要通過已注冊的訂戶(本地和遠程訂戶)分發消息。

在這種情況下, 不會創建任何代理 (本地或遠程)。 您只需連接到現有代理。 當然,您也可以創建本地代理並將其配置為將消息路由到遠程代理(例如,您可以通過靜態/動態網絡傳輸或對等網絡傳輸協議來執行此操作)。 ActiveMQ為您提供了許多集成拓撲和模式 - 但首先您必須定義實際要實現的內容。

你需要使用類似下面的東西。 用你想要使用的目標ip替換ipaddress

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

暫無
暫無

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

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