我们正在开发IBM WebSphere MQ应用程序,我们使用JMS API来操作消息。但是我们遇到的问题是连接需要花费太多时间,而且我们想要集中JMS连接,因为它是一个独立的应用程序,我们没有应用程序容器来提供JNDI或池服务。那么有解决方案吗?对于JDBC,我们可以使用DBCP或c3p0来归档池数据源,在JMS中,是否有任何类似的项目可以汇集JMS连接?
答案 0 :(得分:7)
以前JMS MQConnectionFactory内置了池,但似乎在版本7中,它已被删除。
在早期版本的WebSphere中设置ConnectionPooling的使用 JMS的MQ类。保留此方法以与之兼容 较旧的MQJMS应用程序,但是,因为这个连接池 功能已从版本7中删除,设置此属性 没有效果。
在没有任何其他内容的情况下,您可以使用Apache Commons Pool。与DBCP(使用池)相同,但对于非JDBC对象。
答案 1 :(得分:0)
Spring的CachingConnectionFactory适用于这个用例。 https://stackoverflow.com/a/31119435/1765341中的答案解释了如何在Tomcat中执行此操作,但其中的代码可以轻松地适用于Java独立应用程序。与编写Apache Commons Pool实现相比,这应该更容易(并且更不容易出错)。