【问题标题】:Servlet to remote ActiveMQServlet 到远程 ActiveMQ
【发布时间】:2010-10-13 06:28:28
【问题描述】:

我正在尝试使用 JMS 从 servlet(在 Apache Tomcat 上运行)向在同一系统上的不同 VM 中运行的 ActiveMQ 发送消息。

我尝试过的事情:

  1. 在我的系统上运行 ActiveMQ。
  2. 编写了一个客户端(Java 应用程序)(生产者)来创建消息。
  3. 编写了一个客户端(Java 应用程序)(消费者)来接收这些消息。

上述设置工作正常。

现在,我有一个 servlet,它通过 JNDI 查找资源。这是Tomcat META-INF目录下context.xml的配置。

<Context>
    <Resource 
            name="jms/ConnectionFactory" 
            auth="Container" 
            type="org.apache.activemq.ActiveMQConnectionFactory" 
            description="JMS Connection Factory"
            factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
            brokerURL=" tcp://localhost:61616" 
    />
</Context>

我可以从 sevlet 中查找这些资源。消息已发送。但我认为它没有达到 ActiveMQ。任何想法为什么?

我觉得它正在将它发送到容器内运行的其他目的地vm://localhost?这不是我想要的。我是妈妈的新手。

如果有人能告诉我如何将 JMS 消息从 servlet 发送到远程代理,那就太好了。

【问题讨论】:

    标签: java activemq


    【解决方案1】:

    如果您通过 JNDI 查找指向位于 tcp://localhost:61616 的 ActiveMQ 实例的连接,则该连接不是远程代理。那是在本地机器上运行的代理,端口为 61616。如果您希望连接到另一台机器上的远程代理,请将 localhost 替换为 IP 地址。

    布鲁斯

    【讨论】:

    • 嗨,布鲁斯,感谢您的宝贵时间。 ActiveMQ 在同一系统上运行,但作为不同的进程。我如何将任何想法与它联系起来?它在不同的虚拟机中运行。
    • 如果它在同一个系统上运行但在不同的端口上,那么你只需要指向正确的端口号。
    猜你喜欢
    • 2013-10-03
    • 2017-07-16
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多