java - 怎么能不在本地使用activemq呢?

标签 java jms activemq

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

但是我应该在另一台机器上创建什么来订阅这个主题呢?我是否应该在第二台机器上创建第二个本地 ActiveMQ 代理,以及如何订阅第一台机器上的远程主题???

最佳答案

localhost:61616 将使 activeMQ 仅在 loopback(127.0.0.1) 接口(interface)上监听。使用机器的 IP 或 0.0.0.0 代替。

关于java - 怎么能不在本地使用activemq呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318439/

相关文章:

java - @DateTimeFormat(pattern ="yyyy-MM-dd") 使用 Spring Mvc Rest Service 给出 "error 400 request syntactically incorrect"

java - 处理二维数组排序的任务

Java多线程应用程序问题

java - 在 Mockito doReturn 方法中指定传递给方法的特定枚举

WildFly 10 Artemis 和 ActiveMQ 5.14 之间的 JMS 桥接(ONCE_AND_ONLY_ONCE 服务质量)

java - 在 WAR 文件 (JEE5) 中打包 1 个 WebService 和 2 个 MDB

java - SQL Server 和 Activemq 之间会使用 Apache Camel 吗?

java - 如何在 JBoss EAP 7 中配置 JMS?

java - spring 与 activemq 集成

java - 无法使用 java 创建 ActiveMQ 队列或发送消息