springboot+activemq启动报注解错误
Description:
Field jmsMessagingTemplate in com.haozz.demo.mq.PromoteActProducer required a bean of type 'org.springframework.jms.core.JmsMessagingTemplate' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
The following candidates were found but could not be injected:
- Bean method 'jmsMessagingTemplate' in 'JmsAutoConfiguration.MessagingTemplateConfiguration' not loaded because Ancestor org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration did not match
Action:
Consider revisiting the entries above or defining a bean of type 'org.springframework.jms.core.JmsMessagingTemplate' in your configuration.
原因总结有以下3点原因:
1.spring.activemq.pool.enabled=true,线程池开启,后面有空格,且没有引入线程池包
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-pool</artifactId>
- </dependency>
2.springboot版本问题不支持,建议用2.0版本启动
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.0.1.RELEASE</version>
- <relativePath /> <!-- lookup parent from repository -->
- </parent>
猜想:估计是因为2.1.0+版本有自己的线程池管理,导致冲突
3.spring.activemq.pool.enabled=false,关闭线程池
springboot整合activemq踩过坑

启动时候就关闭了
配置如下
- server:
- port: 8762
- # context-path: /memeber
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:8761/eureka/
- spring:
- application:
- name: member
- redis:
- host: 127.0.0.1
- password: 123456
- port: 6379
- pool:
- max-idle: 100
- min-idle: 1
- max-active: 1000
- max-wait: -1
- datasource:
- name: test1
- url: jdbc:mysql://127.0.0.1:3306/dandan-member
- username: root
- password: 123456
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: com.mysql.jdbc.Driver
- filters: stat
- maxActive: 20
- initialSize: 1
- maxWait: 60000
- minIdle: 1
- timeBetweenEvictionRunsMillis: 60000
- minEvictableIdleTimeMillis: 300000
- validationQuery: select 'x'
- testWhileIdle: true
- testOnBorrow: false
- testOnReturn: false
- poolPreparedStatements: true
- maxOpenPreparedStatements: 20
- ##activemq连接信息
- activemq:
- broker-url: tcp://localhost:61616
- in-memory: true
- pool:
- enabled: false
- ##队列
- messages:
- queue: messages_queue
解决如下
原本activemq 没有在spring.后面直接在前面了,与spring同级了
解决后配置如下
- server:
- port: 8762
- # context-path: /memeber
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:8761/eureka/
- spring:
- application:
- name: member
- redis:
- host: 127.0.0.1
- password: 123456
- port: 6379
- pool:
- max-idle: 100
- min-idle: 1
- max-active: 1000
- max-wait: -1
- datasource:
- name: test1
- url: jdbc:mysql://127.0.0.1:3306/dandan-member
- username: root
- password: 123456
- type: com.alibaba.druid.pool.DruidDataSource
- driver-class-name: com.mysql.jdbc.Driver
- filters: stat
- maxActive: 20
- initialSize: 1
- maxWait: 60000
- minIdle: 1
- timeBetweenEvictionRunsMillis: 60000
- minEvictableIdleTimeMillis: 300000
- validationQuery: select 'x'
- testWhileIdle: true
- testOnBorrow: false
- testOnReturn: false
- poolPreparedStatements: true
- maxOpenPreparedStatements: 20
- ##activemq连接信息
- activemq:
- broker-url: tcp://localhost:61616
- in-memory: true
- pool:
- enabled: false
- ##队列
- messages:
- queue: messages_queue
建议。yml缩进要四个字节。一个字节不容易分辨
以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。