7.5. 使用 JMS 连接池
本节讨论 JMS 连接/会话池选项。JDBC 的选择数量比这里少。这些信息被分为以下主题:
要使用 XA 恢复,您应使用 pax-jms-pool-transx 或 pax-jms-pool-narayana 连接池模块。
7.5.1. 使用 JMS 连接池简介 复制链接链接已复制到粘贴板!
目前,您已注册了特定于代理的 连接工厂。由于 连接工厂 本身是连接工厂的工厂,因此 org.ops4j.pax.jms.service.ConnectionFactoryonnectionFactory y 服务可以被视为元数据 工厂。它应该可以生成两种连接工厂:
-
javax.jms.ConnectionFactory -
javax.jms.XAConnectionFactory
pax-jms-pool-* 捆绑包可以与 org.ops4j.pax.jms.service.ConnectionFactoryonnectionFactoryy 服务一起正常工作。这些捆绑包提供了 org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactory y 的实施,它通过使用一组属性和原始 org.ops4j.pax.jms.service.ConnectionFactor yy 来创建池连接工厂。例如:
public interface PooledConnectionFactoryFactory {
ConnectionFactory create(ConnectionFactoryFactory cff, Map<String, Object> props);
}
public interface PooledConnectionFactoryFactory {
ConnectionFactory create(ConnectionFactoryFactory cff, Map<String, Object> props);
}
下表显示了哪些捆绑包注册了池连接工厂。在表格中,o.o.p.j.p 代表 org.ops4j.pax.jms.pool。
| 捆绑包(Bundle) | PooledConnectionFactoryFactory | 池密钥 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
pax-jms-pool-narayana 工厂名为 PooledJms(XA)PooledConnectionFactoryonnectionFactory y,因为它基于 pooled-jms 库。它为 XA 恢复增加了 Narayana 事务管理器的集成。
以上捆绑包只安装连接工厂。要安装的捆绑包本身不安装连接。因此,需要调用 javax.jms.ConnectionFactory org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactoryy.create() 方法所需要的内容。
7.5.2. 使用 pax-jms-pool-pooledjms 连接池模块 复制链接链接已复制到粘贴板!
了解如何使用 pax-jms-pool-pooledjms 捆绑包可帮助您仅使用 pax-jms-pool-pooledjms 捆绑包,但 pax-jms-pool-narayna bundle 几乎都是 pax-jms-pool-pooledjms。
pax-jms-config 捆绑包会跟踪以下内容:
-
org.ops4j.pax.jms.service.ConnectionFactoryFactoryservices -
org.ops4j.connectionfactoryfactory PIDs -
org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactoryy 的实例由pax-jms-pool-*捆绑包注册。
如果 工厂配置 包含 pool 属性,则由 pax-jms-config 捆绑包注册的最终连接工厂为代理特定的连接工厂。如果 pool=pooledjms,则连接工厂将在以下之一内换行:
-
org.messaginghub.pooled.jms.JmsPoolConnectionFactory(xa=false) -
org.messaginghub.pooled.jms.JmsPoolXAConnectionFactory(xa=true)
除了 池 属性(以及布尔值 xa 属性外,它选择非 xa/xa 连接工厂之一),org.ops4j.connection factory PID 可能包含以 pool. 前缀的属性。
对于 pooled-jms 库,这些前缀属性被使用(删除前缀后)来配置实例:
-
org.messaginghub.pooled.jms.JmsPoolConnectionFactory, or -
org.messaginghub.pooled.jms.JmsPoolXAConnectionFactory
以下列表是 池ed-jms 池(org.ops4j.connectionfactory-artemis factory PID工厂)的真实配置,它使用带有 jms.-prefixed 的便捷语法:
在上述配置中,池和 xa 键是 提示 (服务过滤器属性)用于选择其中一个注册的 org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactoryy 服务。如果是 pooled-jms 库,这是:
以下是创建和配置连接池的完整示例:
安装所需功能:
karaf@root()> feature:install -v pax-jms-pool-pooledjms pax-jms-artemis Adding features: pax-jms-pool-pooledjms/[1.0.0,1.0.0] ...
karaf@root()> feature:install -v pax-jms-pool-pooledjms pax-jms-artemis Adding features: pax-jms-pool-pooledjms/[1.0.0,1.0.0] ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
jms功能:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 工厂配置 :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查
pax-jms-config是否处理配置为javax.jms.ConnectionFactory服务:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用连接工厂:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.3. 使用 pax-jms-pool-narayana 连接池模块 复制链接链接已复制到粘贴板!
pax-jms-pool-narayna 模块几乎都有 pax-jms-pool-pooledjms 的所有内容。它安装特定于 pooled-jms 的 org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactory y,它们适用于 XA 和非 XA 场景。唯一的 区别是在 XA 方案中,有一个额外的集成点。org.jboss.tm.XAResourceRecovery OSGi 服务由 com.arjuna.ats.arjuna.recoveryManager 获取。
7.5.4. 使用 pax-jms-pool-transx 连接池模块 复制链接链接已复制到粘贴板!
pax-jms-pool-transx 模块提供了一个 org.ops4j.pax.jms.service.PooledConnectionFactoryonnectionFactoryy 服务(基于 pax-transx-jms 捆绑包)的实施。pax-transx-jms 捆绑包通过使用 org 池。这是 第 8.3 节 “关于 pax-transx 项目” 中讨论的 JCA(Java™ 连接器架构)解决方案。
.ops4j.pax.transx.ManagedConnectionFactory 功能来创建 java x.jms.jms.ConnectionFactoryBuilder