【发布时间】:2015-07-12 20:59:53
【问题描述】:
从 Spring Boot 1.1.4 迁移到 1.2.3 我们遇到以下问题:
在 1.1.4 下的 Spring Java 配置中,我们将 org.springframework.jms.connection.CachingConnectionFactory 与 org.springframework.boot.autoconfigure.jms.hornetq.HornetQAutoConfiguration 模板化的 jmsConnectionFactory 结合起来,效果很好。
在 1.2.3 下,HornetQAutoConfiguration 已经过重做,这让我们想知道如何在不从头开始编写整个配置的情况下配置 CachingConnectionFactory 的使用。
在 Spring Boot 中使用 CachingConnectionFactory 和 HornetQ 来缓存 JMS Sessions 和 MessageProducers 的场景是否仍然有效?
如果答案是肯定的,那么在Spring Boot 1.2.3下如何配置CachingConnectionFactory?
是否应该将这个问题转化为 Spring Boot 问题?
【问题讨论】:
-
注意:在 1.1.4 下,由于公共方法
HornetQAutoConfiguration.jmsConnectionFactory()在 1.2.3 下不再可用,因此具有灵活性。可以将 HornetQAutoConfiguration 子类化,并通过 super 以工厂方法的形式调用该方法,然后使用 CachingConnectionFactory 包装结果。 -
我看到的最简单的方法是创建一个
BeanPostProcessor,它检查一个bean是否是ConnectionFactory,然后将它包装在CachingConnectionFactory中,这适用于任何JMS实现,没有扩展任何特定的 Spring Boot 类。 (无论 Spring Boot 版本如何,这都应该有效)。 -
在您的定制中包装一个自动配置的 bean 确实很棘手。我认为我们可以设想支持
CachingConnectionFactory或稍微开放API 以提供此类支持的问题。请创建一个问题
标签: jms spring-boot hornetq spring-jms