我正在尝试使用 JMS 从 servlet(在 Apache Tomcat 上运行)向在同一系统上的不同 VM 中运行的 ActiveMQ 发送消息。
我尝试过的事情:
- 在我的系统上运行 ActiveMQ。
- 编写了一个客户端(Java 应用程序)(Producer)来创建消息。
- 编写了一个客户端(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
?这不是我想要的。我是妈妈的新人。
如果有人能告诉我如何从 servlet 向远程 Broker 发送 JMS 消息,那就太好了。
最佳答案
如果您通过 JNDI 查找指向 tcp://localhost:61616 处的 ActiveMQ 实例的连接,则该连接不是远程代理。这是在本地计算机上的端口 61616 上运行的代理。如果您希望连接到另一台计算机上的远程代理,请将 localhost 替换为 IP 地址。
布鲁斯
关于java - Servlet 到远程 ActiveMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3899035/