使用JmsListener的Spring JMS消息传递-如何扩展?

时间:2018-07-03 16:56:09

标签: spring spring-boot spring-jms spring-messaging

我正在尝试以可扩展的方式将Spring JMS消息传递与@JmsListener一起使用,但是我没有看到它的发生。我有一个ConnectionFactory bean,它返回一个通过JMS和数据库数据源池连接到Oracle Advanced Queue的工厂。

随着每个@JmsListener接收器再次连接到JMS(并因此连接到数据库池),问题开始了。我的理解是,我可以有很多@JmsListener方法,每个服务一个方法,但是通过这种方式,我的能力非常有限。

共享连接已打开,但是由于每个@JmsListener创建一个不同的DefaultMessageListenerContainer,因此每个都有一个数据库连接。

如果我还希望服务同时处理消息并设置container.setConcurrency("3-5"),则它将打开3 * numberOfListeners连接。

如果我使用container.setCacheLevel(DefaultMessageListenerContainer.CACHE_NONE),则每个侦听器容器每秒都会连接JMS /数据库并与之断开连接。

我想要一种将一次(或多次,如果要处理并发作业)连接到JMS /数据库的东西,而不是连接侦听器次数,也不要在每个侦听器每秒连接或断开连接。

1 个答案:

答案 0 :(得分:0)

您可以使用SingleConnectionFactory包装供应商工厂,所有容器将使用相同的连接。