Spring JmsTemplate默认关闭连接吗?

6
我写了一个JMS应用程序,它在Glassfish中的Web服务中运行(也在JBoss中部署),我注意到在通过MessageListener MDP处理多个消息后,JMS服务器会耗尽连接!我已经尝试使用Apache ActiveMQ和Glassfish内部的JMS代理(openMQ?)。
有没有办法检查为什么会发生这种情况?如果这是JmsTemplate的默认行为,那么我开发JMS生产者和消费者的正确方法是什么?
谢谢!

1
也许你是在以不同的方式问同一个问题(https://dev59.com/i1HTa4cB1Zd3GeqPR3tC)? - Raghuram
是的,经过调查后,我最初认为这是一个ActiveMQ问题。 - wsb3383
2个回答

4

spring的JMSTemplate每次接收或发送一条消息时,都会关闭并创建所有资源(连接、消费者、生产者等)。如果您没有使用池化的连接、会话、消费者等,则这将是一个巨大的性能瓶颈。

话虽如此,JMSTemplate确实应该每次关闭连接。


1

是的,连接会关闭。请参见执行方法的代码

JmsUtils.closeSession(sessionToClose);
ConnectionFactoryUtils.releaseConnection(
    conToClose, getConnectionFactory(), startConnection);

9
为什么 JMS 服务器上的连接保持打开状态? - wsb3383

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接