未设置application.yaml spring.activemq.broker-url

时间:2019-04-29 09:58:49

标签: spring-boot apache-camel yaml activemq

我正在尝试将spring应用程序设置为侦听JMS队列。 我尝试在我的application.yml中设置broker-url,但似乎总是默认返回到“ localhost:61616”。 从另一个应用程序加载了application.yml文件,但是我认为这并不重要,因为读取了文件中的其他属性(例如队列的名称)

这是我收到的消息:

o.a.a.t.failover.FailoverTransport;Failed to connect to [tcp://localhost:61616] after: 40 attempt(s) continuing to retry.

我尝试过的事情

我已经尝试遵循以下问题的答案:Camel ActiveMQ + Spring boot not reading spring activemq configurations 这是我的确切问题

但是当我尝试添加依赖项并创建该类时,出现此错误:

Parameter 0 of method createComponent in xxx.xxxxx.xxxx.configuration.ActiveMQComponentConfig required a bean of type 'javax.jms.ConnectionFactory' that could not be found.

我对Spring boot / ActiveMQ还是很陌生,真的不知道该怎么办。

这是我pom.xml的相关部分

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath />
</parent>

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring-boot-starter</artifactId>
    <version>${camel.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-camel</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-broker</artifactId>
        </exclusion>
    </exclusions>
</dependency>

还有我的application.yml:

spring:
  aop:
    proxy-target-class: true
  cache:
    ehcache:
      config: classpath:ehcache.xml
  activemq:
    broker-url: tcp://foo:12345
    pool:
      enabled: true
      max-connections: 5

任何帮助将不胜感激,我已经花了很多时间在此上并且没有取得任何进展

1 个答案:

答案 0 :(得分:1)

这就是我最终使它重新工作的结果。我仍然不知道为什么Spring的autoconfig停止工作,但是解决了

@Configuration
public class JmsConfig {

    @Value("${spring.activemq.broker-url}")
    String BROKER_URL;
    @Value("${spring.activemq.user}")
    String BROKER_USERNAME;
    @Value("${spring.activemq.password}")
    String BROKER_PASSWORD;

    @Bean
    public ActiveMQConnectionFactory connectionFactory(){
        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
        connectionFactory.setBrokerURL(BROKER_URL);
        connectionFactory.setUserName(BROKER_USERNAME);
        connectionFactory.setPassword(BROKER_PASSWORD);
        return connectionFactory;
    }

    @Bean
    public JmsTemplate jmsTemplate(){
        JmsTemplate template = new JmsTemplate();
        template.setConnectionFactory(connectionFactory());
        return template;
    }

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory());
        factory.setConcurrency("1-1");
        return factory;
    }
}