5

我们正在开发一个 IBM WebSphere MQ 应用程序,我们使用 JMS API 来操作消息。但是我们有一个问题是连接耗时太长,我们想将JMS连接池化,因为它是一个独立的应用程序,我们没有应用程序容器来提供JNDI或池化服务。那么有没有办法解决这个问题呢?对于 JDBC 我们可以使用 DBCP 或 c3p0 来归档池化数据源,在 JMS 中,有没有类似的项目可以池化 JMS 连接?

4

2 回答 2

7

过去 JMS MQConnectionFactory内置了池,但似乎在版本 7 中已将其删除。

在用于 JMS 的早期版本的 WebSphere MQ 类中设置 ConnectionPooling 的使用。保留此方法是为了与较旧的 MQJMS 应用程序兼容,但由于此连接池功能已从版本 7 中删除,因此设置此属性将无效。

在没有其他任何东西的情况下,您可以使用Apache Commons Pool。与 DBCP(使用池)相同的想法,但用于非 JDBC 对象。

于 2012-01-19T18:57:28.547 回答
0

Spring 的 CachingConnectionFactory 非常适合这个用例。https://stackoverflow.com/a/31119435/1765341中的这个答案解释了如何在 Tomcat 中执行此操作,但那里的代码可以很容易地适用于 Java 独立应用程序。这应该比编写 Apache Commons Pool 实现更容易(并且更不容易出错)。

于 2015-06-29T15:25:39.237 回答