【发布时间】:2018-12-12 01:35:46
【问题描述】:
我正在尝试以可扩展的方式将 Spring JMS 消息与 @JmsListener 一起使用,但我没有看到它发生。我有一个 ConnectionFactory bean,它返回一个通过 JMS 和数据库 DataSource 池连接到 Oracle Advanced Queue 的工厂。
问题开始于每个@JmsListener 接收器再次连接到JMS(并因此连接到数据库池)。我的理解是我可以有很多 @JmsListener 方法,每个服务一个,但是这样我做的非常有限。
共享连接是开启的,但是由于每个@JmsListener创建了不同的DefaultMessageListenerContainer,所以每个都有一个数据库连接。
如果我还希望服务同时处理消息并设置container.setConcurrency("3-5"),那么它会打开3 * numberOfListeners 连接。
如果我使用container.setCacheLevel(DefaultMessageListenerContainer.CACHE_NONE),那么从每一秒开始,每个侦听器容器都会与 JMS/数据库连接和断开连接。
我想要一个连接一次(或更多,如果有并发作业要处理)到 JMS/数据库的东西,而不是连接侦听器次数,也不是为每个侦听器每秒连接断开连接。
【问题讨论】:
-
你找到解决这个问题的方法了吗?如果是这样,请在此处发布。我也有同样的问题
标签: spring spring-boot spring-jms spring-messaging