解决springboot+activemq启动报注解错误的问题

这篇文章主要介绍了解决springboot+activemq启动报注解错误的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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,线程池开启,后面有空格,且没有引入线程池包

org.apache.activemqactivemq-pool

2.springboot版本问题不支持,建议用2.0版本启动

org.springframework.bootspring-boot-starter-parent2.0.1.RELEASE

猜想:估计是因为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缩进要四个字节。一个字节不容易分辨

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程之家。

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...