【问题标题】:How to connect a remote jms client to an embedded activemq broker in tomcat?如何将远程 jms 客户端连接到 tomcat 中的嵌入式 activemq 代理?
【发布时间】:2012-05-06 12:02:31
【问题描述】:

我在 tomcat 中有一个嵌入式代理,我的 webapp 客户端使用 vm://localhost 可以正常连接。我希望另一个 jvm 中的一些远程客户端能够连接到嵌入式代理。如何设置嵌入式代理以侦听端口#?这适用于嵌入式客户端:

server.xml 片段:

<Resource auth="Container" 
name="jms/ConnectionFactory" 
type="org.apache.activemq.ActiveMQConnectionFactory" 
description="JMS Connection Factory" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
brokerURL="vm://localhost" 
brokerName="MyActiveMQBroker" 
useEmbeddedBroker="true"/>  

这不适用于远程客户端,但我的嵌入式客户端仍然使用 vm://localhost 进行连接:

<Resource auth="Container" 
name="jms/ConnectionFactory" 
type="org.apache.activemq.ActiveMQConnectionFactory" 
description="JMS Connection Factory" 
factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
brokerURL="vm:(broker:(tcp://localhost:61616))" 
brokerName="MyActiveMQBroker" 
useEmbeddedBroker="true"/>  

我的远程客户端给出了这个错误:

无法连接到代理 URL:tcp://localhost:61616。原因:java.net.ConnectException:连接被拒绝

我也一直在尝试这个:

brokerURL="vm://localbroker?brokerConfig=xbean:file:C:/temp/activemq.xml"

在activemq.xml中,设置如下:

<transportConnectors>
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
</transportConnectors>

<networkConnectors>
<networkConnector uri="static:(tcp://0.0.0.0:61616)"/>
</networkConnectors>

我不相信 xml 文件会被读取,因为在编辑它时我的症状永远不会改变。在 tomcat 启动时,当第一个客户端 webapp 部署时,代理启动并报告:

连接器 vm://localhost 已启动

我从未见过其他连接器启动,例如 tcp://0.0.0.0:61616。这可能吗?

【问题讨论】:

    标签: xml activemq


    【解决方案1】:

    vm://localhost 不会为远程代理打开 tcp 端口进行连接。 vm 协议可以在 JVM 中使用。

    在本地 tomcat 上进行配置(例如,将主机名视为“tomcathostone”的本地服务器)

    <Resource auth="Container" 
    name="jms/ConnectionFactory" 
    type="org.apache.activemq.ActiveMQConnectionFactory" 
    description="JMS Connection Factory" 
    factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
    brokerURL="broker:(tcp://0.0.0.0:61616)" 
    brokerName="MyActiveMQBroker" 
    useEmbeddedBroker="true"/> 
    

    远程 tomcat 上的配置(例如,考虑主机名为“tomcathosttwo”的远程服务器)

    <Resource auth="Container" 
    name="jms/ConnectionFactory" 
    type="org.apache.activemq.ActiveMQConnectionFactory" 
    description="JMS Connection Factory" 
    factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
    brokerURL="broker:(tcp://tomcathosttwo:61616,network:static:tcp://tomcathostone:61616)" 
    brokerName="MyActiveMQBroker" 
    useEmbeddedBroker="true"/>
    

    【讨论】:

    • 我在 Tomcat 7 server.xml 中使用了带有 brokerURL="broker:(tcp://0.0.0.0:61616)" 的配置,但我遇到了错误:嵌套异常是 javax。 jms.JMSException:无法创建传输。原因:java.io.IOException:无法识别传输方案:[代理]。你知道这个问题的原因是什么吗?
    • @Satish 嗨,请您提供一些线索。 stackoverflow.com/questions/19706788/…
    • 我也有类似的问题,你可以看看stackoverflow.com/questions/62313720/…
    猜你喜欢
    • 2011-07-26
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2013-01-28
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多