上一篇讲到在整合activeMQ如何将queue和topic两种模式共存:spring boot2.0整合activeMQ,实现p2p和topic两者消息模式兼容共存
然后还遗留了一个问题,有读者评论因为配置文件里一句启用连接池导致项目启动报错,只要把那句配置注释掉或者改为false就可以了,这实际上是治标不治本,因毕竟流量大的时候不启用连接池效率会很低:
# 启用连接池
spring.activemq.pool.enabled=true
诚然,如果不想使用连接池,那么快速的办法的确是把这个配置直接干掉,或者改为false,其是默认就是false,但是我们来看一看启用连接池后启动项目提示JmsMessagingTemplate无法注入真正的原因是什么
开启连接池,启动项目会报错,提示JmsMessagingTemplate无法注入、
目前使用springboot最新版本是2.1+,我先直接告诉你解决方法,如果要启用连接池:
- 使用springboot2.0+及以下版本时候,maven配置依赖是:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
- 使用springboot2.1+时候,maven配置依赖是:
<dependency>
<groupId>org.messaginghub</groupId>
<artifactId>pooled-jms</artifactId>
</dependency>
请按照自己使用的springboot版本更换对应的连接池依赖就可以解决问题。但为什么一样呢?我们来看看springboot的自动配置的部分源码:
- 使用springboot2.0+及以下版本时候:
@Configuration
@ConditionalOnMissingBean(ConnectionFactory.class)
class ActiveMQConnectionFactoryConfiguration {
@Bean
@ConditionalOnProperty(prefix = "spring.activemq.pool", name = "enabled", havingValue = "false", matchIfMissing = true)
public ActiveMQConnectionFactory jmsConnectionFactory(ActiveMQProperties properties,
ObjectProvider<List<ActiveMQConnectionFactoryCustomizer>> factoryCustomizers) {
return new ActiveMQConnectionFactoryFacto

最低0.47元/天 解锁文章
2258





