无法启动网桥,原因是:java.net.ConnectException:连接被拒绝:连接

无法启动网桥,原因是:java.net.ConnectException:连接被拒绝:连接,java,jms,activemq,Java,Jms,Activemq,我试图在非主站点中的代理和主站点中的代理之间定义一个网桥,其预期行为是将非主站点中生成的消息转发到主站点并在那里进行处理 在线做了一些研究之后,我为我的非主代理添加了一个元素,指向主代理 这是主代理的XML文件: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3

我试图在非主站点中的代理和主站点中的代理之间定义一个网桥,其预期行为是将非主站点中生成的消息转发到主站点并在那里进行处理

在线做了一些研究之后,我为我的非主代理添加了一个
元素,指向主代理

这是主代理的XML文件:

<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="Broker" dataDirectory="SOME_PATH" destroyApplicationContextOnStop="true" advisorySupport="false" schedulerSupport="true">

        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="true" memoryLimit="20mb">
                  <pendingSubscriberPolicy>
                    <vmCursor />
                  </pendingSubscriberPolicy>
                </policyEntry>
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="20mb">
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy> 

        <managementContext>
            <managementContext createConnector="false"/>
        </managementContext>

        <persistenceAdapter>
            <kahaDB directory="SOME_PATH"/>
        </persistenceAdapter>

        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="50 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <transportConnectors>
            <transportConnector name="primary_broker" uri="tcp://localhost:2384"/>
        </transportConnectors>

    </broker>    
</beans>
<beans
  xmlns="http://www.springframework.org/schema/beans"
  xmlns:amq="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="Broker" dataDirectory="SOME_PATH" destroyApplicationContextOnStop="true" advisorySupport="false" schedulerSupport="true">

        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">" producerFlowControl="true" memoryLimit="20mb">
                  <pendingSubscriberPolicy>
                    <vmCursor />
                  </pendingSubscriberPolicy>
                </policyEntry>
                <policyEntry queue=">" producerFlowControl="true" memoryLimit="20mb">
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy> 

        <managementContext>
            <managementContext createConnector="false"/>
        </managementContext>

        <networkConnectors>
            <networkConnector name="bridge" uri="static:(tcp://PRIMARY_SERVER_NAME:2384)"/>
        </networkConnectors>

        <persistenceAdapter>
            <kahaDB directory="SOME_PATH"/>
        </persistenceAdapter>

        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="50 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <transportConnectors>
            <transportConnector name="secondary_broker" uri="tcp://localhost:2386"/>
        </transportConnectors>

    </broker>    
</beans>
我做了一些调查,让IT团队参与进来,并确认这不是防火墙问题

我试图在同一个非主主机上的两个代理之间建立一个网络。我使用了相同的配置(即仅通过更新
networkConnector
中的
uri
值),这次成功建立了网络

我不知道发生了什么,为什么要使用相同的配置,并且假设没有网络问题,我可以在同一台主机上桥接2个代理,但不能在不同的主机上桥接


我正在使用ActiveMQ v5.5。

问题是主代理中的
元素配置为
localhost

将其更改为使用实际的服务器名称后,它工作正常

<transportConnectors>
    <transportConnector name="primary_broker" uri="tcp://SERVER_NAME:2384"/>
</transportConnectors>

如果您使用的是activemq 5.13.3版(或更高版本),则只需创建共享文件系统装入点,并在activemq.xml配置文件中指定其位置:

<persistenceAdapter>
   <levelDB directory="/shared-File-System-Mount-Point"/>
</persistenceAdapter>

我一直在使用AWS efs文件系统,它工作得非常好。 无需指定网络连接器。 加载时,其中一个activemq服务器将在此位置锁定一个文件,并将成为主服务器。 如果由于任何原因失败,其中一个可用的从属设备将自动成为主设备

可以找到更多信息

而且,它是一个非常棒的工具

<persistenceAdapter>
   <levelDB directory="/shared-File-System-Mount-Point"/>
</persistenceAdapter>