【问题标题】:Use ActiveMQ in Travis CI在 Travis CI 中使用 ActiveMQ
【发布时间】:2015-07-28 21:03:18
【问题描述】:

在 Active MQ 上添加配置后,我在 Travis CI 中的 build 失败。

Travis CI 的日志显示:

Caused by: javax.jms.JMSException: Could not connect to broker URL: tcp://localhost:61616. Reason: java.net.ConnectException: Connection refused
    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:36)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:360)
    at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:305)
    at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:245)
    at org.springframework.jms.connection.SingleConnectionFactory.doCreateConnection(SingleConnectionFactory.java:365)
    at org.springframework.jms.connection.SingleConnectionFactory.initConnection(SingleConnectionFactory.java:305)
    at org.springframework.jms.connection.SingleConnectionFactory.getConnection(SingleConnectionFactory.java:283)
    at org.springframework.jms.connection.SingleConnectionFactory.createConnection(SingleConnectionFactory.java:224)
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:180)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:413)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:381)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:285)
    at org.springframework.jms.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:209)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:270)
    ... 44 more

我用的是Spring MVC,下面是测试配置:

<beans "Some DTDs here">
    <!-- Base Components -->
    <context:annotation-config />
    <context:component-scan base-package="com.trunkshell.voj" />

    <!-- Some other configuration for JDBC and other service -->

    <!-- Message Service -->
    <bean id="amqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <constructor-arg index="0" value="tcp://localhost:61616"/>
    </bean>
    <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
        <constructor-arg ref="amqConnectionFactory" />
    </bean> 
    <bean id="defaultDestination" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="vojMessageQueue"/>
    </bean>     
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="defaultDestination" ref="defaultDestination" />
    </bean>
    <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
        <property name="connectionFactory" ref="connectionFactory" />
        <property name="destinationName" value="vojMessageQueue" />
        <property name="messageListener" ref="messageReceiver" />
    </bean> 
    <bean id="messageSender" class="com.trunkshell.voj.util.MessageSender"></bean>
    <bean id="messageReceiver" class="com.trunkshell.voj.util.MessageReceiver"></bean>
</beans>

我还注意到 Travis CI 仅支持 RabbitMQ 和 ZeroMQ。 这是参考:link

那么我应该怎么做才能修复 Travis CI 中的错误呢?

或者如何在 Travis CI 中跳过这个问题。

【问题讨论】:

    标签: spring spring-mvc activemq travis-ci


    【解决方案1】:

    我没有看到您实际上在端口 61616 上启动了 ActiveMQ 代理。要么这样做,要么最好在集成测试期间使用 VM 传输。 IE。将tcp://localhost:61616 更改为vm://localhost?broker.persistent=false

    当然,您必须能够在部署到生产环境时更改该 ActiveMQ URL。也许你可以使用 spring 属性占位符?

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      相关资源
      最近更新 更多