7.2. 关于 PAX-JMS 配置服务
mvn:org.ops4j.pax.jms/pax-jms-config/1.0.0
捆绑包提供了一个 Managed Service Factory,它执行三个操作:
跟踪
org.ops4j.pax.jms.service.ConnectionFactoryFactory
OSGi 服务,以调用其方法:public ConnectionFactory createConnectionFactory(Map<String, Object> properties); public XAConnectionFactory createXAConnectionFactory(Map<String, Object> properties);
public ConnectionFactory createConnectionFactory(Map<String, Object> properties); public XAConnectionFactory createXAConnectionFactory(Map<String, Object> properties);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
跟踪
org.ops4j.connectionfactory
factory PIDs,以收集以上方法所需的属性。如果您使用可用于 Configuration Admin 服务的任何方法创建 工厂配置,例如,通过创建一个${karaf.etc}/org.ops4j.connectionfactory-artemis.cfg
文件,您可以执行最后一步来公开特定于代理的连接工厂。 -
跟踪
javax.jms.ConnectionFactory
和javax.jms.XAConnectionFactory
服务,将它们嵌套在 JMS 连接工厂内。
详情包括在以下主题中:
7.2.1. 为 AMQ 7.1 创建连接工厂 复制链接链接已复制到粘贴板!
以下是为 Artemis 代理创建连接因素的详细 规范、逐步指南。
使用
pax-jms-artemis
功能和pax-jms-config
功能安装 Artemis 驱动程序: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 注意如果您指定了额外的 Artemis 配置,特别是
protocol=amqp
,则将使用 QPID JMS 库而不是 Artemis JMS 客户端。还必须将amqp://
协议用于jms.url
属性。- 测试连接。
现在,您有一个特定于代理(还没有池)的连接工厂,您可以在需要时注入。例如,您可以使用 jms
功能中的 Karaf 命令:
以下列表显示了在切换协议时会发生什么:
7.2.2. 为 IBM MQ 8 或 IBM MQ 9 创建连接工厂 复制链接链接已复制到粘贴板!
本节介绍如何连接到 IBM MQ 8 和 IBM MQ 9。虽然 pax-jms-ibmmq
安装相关的 pax-jms
捆绑包,但由于许可原因,IBM MQ 驱动程序不会被安装。
- 进入 https://developer.ibm.com/messaging/mq-downloads/
- 登录。
- 点您要安装的版本,例如,点 IBM MQ 8.0 Client 或 IBM MQ 9.0 Client。
- 在出现的页面中,在底部,在下载版本表中点击您想要的版本。
-
在下一页中,选择具有
IBM-MQ-Install-Java-All
后缀的最新版本。例如,下载8.0.0.10-WS-MQ-Install-Java-All
或9.0.0.4-IBM-MQ-Install-Java-All
。 - 提取下载的 JAR 文件的内容。
执行
bundle:install
命令。例如,如果您将内容提取到/home/Downloads
目录中,则输入如下命令:`bundle:install -s wrap:file:////home/Downloads/9.0.0.4-IBM-MQ-Install-Java-All/ibmmq9/wmq/JavaSE/com.ibm.mq.allclient.jar`.
`bundle:install -s wrap:file:////home/Downloads/9.0.0.4-IBM-MQ-Install-Java-All/ibmmq9/wmq/JavaSE/com.ibm.mq.allclient.jar`.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 按如下所示创建连接工厂:
安装
pax-jms-ibmmq
: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
您还可以检查消息是否从 IBM MQ Explorer 发送或从 Web 控制台发送。
7.2.3. 在 Apache Karaf 上的 Fuse 中使用 JBoss A-MQ 6.3 客户端 复制链接链接已复制到粘贴板!
您可以从 Fuse Software Downloads 页面下载 Fuse 快速入门
。
将快速启动 zip 文件的内容提取到本地文件夹,例如一个名为 quickstarts
的文件夹。
您可以构建并安装 quickstarts/camel/camel-jms
示例作为 OSGi 捆绑包。此捆绑包包含 Camel 路由的蓝图 XML 定义,用于将消息发送到 JBoss A-MQ 6.3 JMS 队列。为 JBoss A-MQ 6.3 代理创建连接工厂的步骤如下:
7.2.3.1. 先决条件 复制链接链接已复制到粘贴板!
- 已安装 Maven 3.3.1 或更高版本。
- 您已在机器上安装了 Red Hat Fuse。
- 您已在计算机上安装了 JBoss A-MQ Broker 6.3。
- 您已从客户门户网站下载并解压缩了 Karaf quickstarts zip 文件中的 Fuse。
7.2.3.2. 流程 复制链接链接已复制到粘贴板!
-
导航到
quickstarts/camel/camel-jms/src/main/resources/OSGI-INF/blueprint/
目录。 将以下 bean 替换为
camel-context.xml
文件中的 id="jms" :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下部分来实例化 JBoss A-MQ 6.3 连接工厂:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JBoss A-MQ 6.3 连接工厂配置为连接到在
tcp://localhost:61616
侦听的代理。默认情况下,JBoss A-MQ 使用 IP 端口值61616
。连接工厂也配置为使用 userName/password 凭证 admin/admin。确保此用户已在代理协调中启用(或者您可以在此处自定义这些设置以匹配代理配置)。-
保存
camel-context.xml
文件。 构建
camel-jms
快速启动:cd quickstarts/camel/camel-jms mvn install
$ cd quickstarts/camel/camel-jms $ mvn install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 成功安装 Quickstart 后,进入到
$FUSE_HOME/
目录,并运行以下命令来在 Apache Karaf 服务器上启动 Fuse:./bin/fuse
$ ./bin/fuse
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Apache Karaf 实例的 Fuse 上,安装
activemq-client
功能和camel-jms
功能:karaf@root()> feature:install activemq-client karaf@root()> feature:install camel-jms
karaf@root()> feature:install activemq-client karaf@root()> feature:install camel-jms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
camel-jms
quickstart 捆绑包:karaf@root()> install -s mvn:org.jboss.fuse.quickstarts/camel-jms/{$fuseversion}
karaf@root()> install -s mvn:org.jboss.fuse.quickstarts/camel-jms/{$fuseversion}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,将
{$fuseversion}
替换为您刚才构建的 Maven 工件的实际版本(consult the camel-jms quickstart README 文件)。启动
JBoss A-MQ 6.3
代理(您需要安装 JBoss A-MQ 6.3)。打开另一个终端窗口,再导航到 JBOSS_AMQ_63_INSTALLDIR 目录:cd JBOSS_AMQ_63_INSTALLDIR ./bin/amq
$ cd JBOSS_AMQ_63_INSTALLDIR $ ./bin/amq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Camel 路由启动后,您可以在 Fuse 安装中看到目录
work/jms/input
。将您在这个 quickstart 的src/main/data
目录中找到的文件复制到新创建的work/jms/input
目录中。 稍等片刻,您将在
work/jms/output
目录下找到国家按国家组织相同的文件:order1.xml, order2.xml and order4.xml in work/jms/output/others order3.xml and order5.xml in work/jms/output/us order6.xml in work/jms/output/fr
order1.xml, order2.xml and order4.xml in work/jms/output/others order3.xml and order5.xml in work/jms/output/us order6.xml in work/jms/output/fr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
log:display
检查业务日志记录:Receiving order order1.xml Sending order order1.xml to another country Done processing order1.xml
Receiving order order1.xml Sending order order1.xml to another country Done processing order1.xml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2.4. 处理的属性摘要 复制链接链接已复制到粘贴板!
Configuration Admin factory PID 中的属性传递到相关的 org.ops4j.pax.jms.service.ConnectionFactoryFactory
实现。
ActiveMQ
org.ops4j.pax.jms.activemq.ActiveMQConnectionFactoryFactory
(仅限JMS 1.1)传递给
org.apache.activemq.ActiveMQConnectionFactory.buildFromMap ()
方法的属性artemis
org.ops4j.pax.jms.artemis.ArtemisConnectionFactoryFactory
如果
protocol=amqp
,属性将传递到org.apache.qpid.jms.util.util.PropertyUtil.setProperties ()
方法,以配置org.apache.qpid.jms.JmsConnectionFactory
实例。否则,
org.apache.activemq.artemis.utils.uri.BeanSupport.setData ()
为org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory
实例调用。IBM MQ
org.ops4j.pax.jms.ibmmq.MQConnectionFactoryFactory
处理
com.ibm.mq.jms.MQConnectionFactory
或com.ibm.mq.jms.MQXAConnectionFactory
的 bean 属性。