我正在尝试以一种可伸缩的方式将Spring JMS消息传递与@JmsListener结合使用,但我并没有看到它的实现。我有一个JMS,它返回一个工厂,该工厂通过ConnectionFactory和一个数据库DataSource池连接到Oracle Advanced队列。
当每个@JmsListener接收器再次连接到JMS (从而连接到数据库池)时,问题就开始了。我的理解是,我可以有许多@JmsListener方法,每个服务一个,但在这种方式下,我非常有限。
共享连接是打开的,但是因为每个@JmsListener创建不同的DefaultMessageListenerContainer,所以每个都有一个数据库连接。
如果我还想让服务并发处理消息并设置container.setConcurrency("3-5"),那么它会打开3 * numberOfListeners连接。
如果我使用container.setCacheLevel(DefaultMessageListenerContainer.CACHE_NONE),那么从每秒开始,每个侦听器容器都会与JMS/数据库连接和断开。
我想要连接一次(或者多次,如果有并发作业要处理)到JMS/数据库的东西,而不是连接侦听器次数,也不是每个侦听器每秒都连接-断开连接。
发布于 2018-07-04 01:18:21
您可以使用SingleConnectionFactory包装供应商工厂,所有容器都将使用相同的连接。
https://stackoverflow.com/questions/51159635
复制相似问题