application.yaml spring.activemq.broker-url не установлен - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь настроить приложение Spring для прослушивания очереди JMS.Я пытаюсь установить broker-url в моем application.yml, но он всегда по умолчанию возвращается к «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 не читает конфигурации Spring ActiveMQ Это моя проблема

Но когда я пытаюсь добавить зависимость и создать этот класс, я получаю эту ошибку:

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 Ответ

1 голос
/ 09 мая 2019

Это то, что я в итоге сделал, чтобы заставить его снова работать. Я до сих пор не знаю, почему автоконфигурация Spring перестала работать, но это решило ее

@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;
    }
}
...