【问题标题】:Connecting to remote activemq instance running on docker container连接到在 docker 容器上运行的远程 activemq 实例
【发布时间】:2014-09-02 22:14:24
【问题描述】:

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

目前我不确定是什么导致了这个错误。任何想法将不胜感激。

错误 [activemq.broker.BrokerService] 无法启动 Apache ActiveMQ ([mybroker, ID:489af431756c-60313-1409695404227-0:1], java.io.IOException: Transport Connector could not be registered in JMX: Failed to绑定到服务器套接字:tcp://172.17.0.2:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600 由于:java.net.BindException:无法分配请求的地址)

【问题讨论】:

  • 请在此问题的上下文中为两台机器提供两个不同的名称(例如appmq)。这个错误来自哪台机器?
  • 一个名为tomcat,一个名为activemq
  • 这条消息是从哪里来的?
  • spring 应用程序尝试连接到活动 mq 代理时的日志
  • 不确定此消息,但似乎是绑定错误,而不是连接错误,例如 spring 应用程序尝试在 activemq 实例的 IP 上启动 ActiveMQ 代理,当然失败了.可以展示一下 Spring 的配置吗?

标签: java activemq docker


【解决方案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>

【讨论】:

    猜你喜欢
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2016-11-22
    • 1970-01-01
    • 2021-11-09
    • 2018-11-05
    相关资源
    最近更新 更多