连接到在docker容器上运行的远程activemq实例

时间:2014-09-02 22:14:25

标签: java activemq docker

我有2个docker容器,一个运行spring应用程序(在tomcat中),另一个运行一个活动的mq实例。当我尝试从我的春季应用程序连接到它时,我收到以下错误。只有activeMQ在一个容器上运行,并且端口已正确公开。我验证了docker容器的IP地址(如下所示),这是正确的。

我不确定此时可能导致此错误的原因。任何想法都将不胜感激。

  
    

错误[activemq.broker.BrokerService]无法启动Apache ActiveMQ([mybroker,ID:489af431756c-60313-1409695404227-0:1],java.io.IOException:传输连接器无法在JMX中注册:失败绑定到服务器套接字:tcp://172.17.0.2:61616?maximumConnections = 1000& wireFormat.maxFrameSize = 104857600,原因是:java.net.BindException:无法分配请求的地址)

  

1 个答案:

答案 0 :(得分:1)

您将Spring配置为在172.17.0.2上启动代理服务,该服务是远程计算机的IP。相反,您应该将Spring配置为连接到该计算机上的现有代理。从ActiveMQ documentation并使用Spring工具JMSTemplate:

<!-- a pooling based JMS provider -->
<bean id="jmsFactory"
      class="org.apache.activemq.pool.PooledConnectionFactory"
      destroy-method="stop">
  <property name="connectionFactory">
    <bean class="org.apache.activemq.ActiveMQConnectionFactory">
      <property name="brokerURL">
        <value>tcp://activemq-host.local:61616</value>
      </property>
    </bean>
  </property>
</bean>

<!-- Spring JMS Template -->
<bean id="myJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
  <property name="connectionFactory">
    <ref local="jmsFactory"/>
  </property>
</bean>