问题描述
我以这种方式创建了一个消息处理程序:
@JmsListeners(
JmsListener(destination = "queue1"),JmsListener(destination = "queue2"),JmsListener(destination = "queue3"),JmsListener(destination = "queue4")
)
fun handleMessage(message: String) {
// handle a message
}
当我检查我的消息代理时,我看到我的应用已经建立了 4 个连接。 不幸的是,我对来自 MQ 管理员的连接数量有限制,因此我希望消息处理程序仅使用 1 个连接。
在检查 Spring Jms 内部之后,我发现 DefaultMessageListenerContainer
has an ability to use a shared connection。但问题是 Spring 的 DefaultMessageListenerContainerFactory
为每个 DefaultMessageListenerContainer
创建了一个单独的 @JmsListener
。
同时,JMS API 允许从单个 JMSConsumer
创建多个 JMSContext
,例如
val jmsContext = connectionFactory.createContext(Session.SESSION_TRANSACTED)
val consumer1 = jmsContext.createConsumer(jmsContext.createQueue("queue1"))
val consumer2 = jmsContext.createConsumer(jmsContext.createQueue("queue2"))
如何设置 JmsListener
以共享公共连接?如果这是不可能的,Spring 是否有合理的理由?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)