springBoot整合Mq报错:JmsMessagingTemplate that could not be found

2020-08-05 14:55:03 浏览数 (1)

springBoot使用gradle版本管理,在整合activeMQ的时候容易出现一个错误,那就是找不到JmsMessagingTemplate,无法匹MessagingTemplateConfiguration,全部报错信息如下:

代码语言:javascript复制

Field jmsMessagingTemplate in com.es.basedata.mq.MqProducer 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

可能性一:这可能是mq配置的问题,这时候你需要去检查一下你的springBoot配置文件,配置activeMQ的时候是否加入了pool节点,开启了线程:

代码语言:javascript复制
  activemq:
    broker-url: tcp://localhost:61616
    user: admin
    password: admin
    pool:
      enabled: true
      max-connections: 50
    #默认包名安全(支持序列化与反序列化)
    packages:
      trust-all: true
  #支持topic订阅模式
  jms:
    pub-sub-domain: true

如果你是这样配置的,需要把enabled: true 改成 false,或者干脆把pool节点干掉。

原理:enabled: true标识开启线程池,由于springBoot也有线程池,两者冲突导致的。

可能性二:

如果按以上的操作还不能解决的话,那就可能是版本的不兼容了。请参考一下版本:

1.springBoot 2.3.1.RELEASE

2.gradle 5.6

3.activeMQ 2.3.1.RELEASE

0 人点赞