我编写了一个在 Glassfish 中的 Web 服务中运行的 JMS 应用程序(也将它部署在 JBoss 中),我注意到在我通过 MessageListener MDP 处理多个消息后,JMS 服务器的连接用完了!
尝试使用 Apache ActiveMQ 和 Glassfish 内部 JMS 代理(openMQ?)
有没有办法检查为什么会这样?如果这是 JmsTemplate 的默认行为,那么以正确的方式开发 JMS 生产者和消费者的替代方法是什么?
谢谢!
我编写了一个在 Glassfish 中的 Web 服务中运行的 JMS 应用程序(也将它部署在 JBoss 中),我注意到在我通过 MessageListener MDP 处理多个消息后,JMS 服务器的连接用完了!
尝试使用 Apache ActiveMQ 和 Glassfish 内部 JMS 代理(openMQ?)
有没有办法检查为什么会这样?如果这是 JmsTemplate 的默认行为,那么以正确的方式开发 JMS 生产者和消费者的替代方法是什么?
谢谢!
每次接收或发送消息时,spring JMSTemplate 都会关闭并创建所有资源(连接、消费者、生产者……)。如果您不使用池连接、会话、消费者......这将是一个巨大的性能瓶颈。
话虽如此,是的,JMSTemplate 每次都应该关闭您的连接。
是的,连接被关闭。查看execute方法的代码:
JmsUtils.closeSession(sessionToClose);
ConnectionFactoryUtils.releaseConnection(
conToClose, getConnectionFactory(), startConnection);