集成 WAS 和 Active MQ

Active MQ 是一个 JMS provider, 一般我们通过 Java EE Connector architecture 来集成 JMS provider, 这里也不例外,我们通过 Active MQ 提供的 resource adapter 来访问 Active MQ 服务器,下面是在 IBM WAS 7 上配置 resource adapter 的步骤。原文:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1103_wucf_wasnd/1103_wucf_wasnd.html

安装 Adapter

登录 WAS console
访问 Resources->Resource Adapters->Resource adapters
图 4. Resource adapter
图 4. Resource adapter
点击 “Install RAR”, 选择某个 node, 在 http://repo1.maven.org/maven2/org/apache/activemq/activemq-rar/下可以找到 activemq-rar-5.3.2.rar,这是我们需要安装的 adapter:
图 5. 安装 adapter
图 5. 安装 adapter
点击 “Next”,配置参数
图 6. Resource adapter 配置
图 6. Resource adapter 配置
查看 Custom Properties, 其中 ServerUrl 应配置成指向已经安装的 Active MQ server
图 7. 配置 custom Properties
图 7. 配置 custom Properties
下面我们需要配置 Connection Factory 和 ActivationSpec, 在配置这些对象之前,我们解释一下这些对象的功能。

JMS Connection Factory: 被 JAVA 用于连接 JMS provider. Connection Factory 用来生成 connection 对象,connection 对象包含了创建连接需要的信息,例如 IP 地址,端口和 SSL 配置,一旦连接上 JMS provider,JAVA 就可以访问 queue 或者 topic. 一般可以用来 post 或 consume 一个 message

JMS ActivationSpec: 被 message-driven bean 用来连接到 JMS provider,它需要有一个 JMS destination 的 JNDI 名字,一旦某个 message 到达 destination,ActivationSpec 就被 MDB 的 onMessage() 方法调用 , 即用于消费某个 message

配置 J2C connection factories

Connection Factory 是被客户端用来创建到 JMS provider 的连接,一般 connection factory 封装了一些连接参数, connection factory 有两种,一种是 QueueConnectionFactory, 另一种是 TopicConnectionFacotry

我们选择在 server 级别创建 connection factories: jms/SampleQueueConnectionFactory 和 jms/SampleTopicConnectionFactory,后面的示例中我们会使用两个 factory 分别创建链接。

图 8. 创建 Connection Factory
图 8. 创建 Connection Factory
注意在创建过程中,”Provider”选择”ActiveMQ JMS Resource Adapter”,在”Connection factory interface”选择”javax.jms.TopicConnectionFactory”,下图是建立一个 topic 的 connection factory 配置。

图 9. 配置 Connection Factory
图 9. 配置 Connection Factory
相应地,需要配置”Custom Properties”,例如,我们在这里配置了”Serverrurl”

图 10. 配置 Custom Properties
图 10. 配置 Custom Properties
注意:一般来说 connection factory 和 destination 可以匹配使用,也可以混合使用,例如,可以使用 QueueConnectionFactory 创建 Topic 连接,也可以使用 TopicConnectionFactory 来创建 Queue 连接。JMS 应用只根据 destination 的类型而不是 connection factory 的类型来处理。

这里两个 factory 我们都选择“javax.jms.TopicConnectionFactory”,如果建立“jms/SampleQueueConnectionFactory”的时候选择”javax.jms.QueueConnectionFactory”,运行程序时候会出错,无法建立到 Active MQ 的链接。

配置 J2C activation specifications

在该示例中,我们使用 MDB 消费 topic message,所以我们创建一个 activation specification: jms/sampletopicactivation

图 11. 创建 Activation Specification
图 11. 创建 Activation Specification
注意,需要配置

J2C activation specifications > Sample Topic Activation > Custom properties

Name Value
destination sampleTopic
destinationType javax.jms.Topic
配置 J2C administered objects

Destination 是客户端用来指定消息生产者把消息发送到哪儿,消息消费者从哪儿获得消息来消费。

我们为 queue 和 topic 分别创建一个 destination:

jms/sample/queue

jms/sample/topic

图 12. 创建 administered object
图 12. 创建 administered object
图 13. 配置 administered object
图 13. 配置 administered object
注意:需要做以下配置:

J2C administered objects > jms/sample/queue > Custom properties

Name Value
PhysicalName sampleQueue
J2C administered objects > jms/sample/topic > Custom properties

Name Value
PhysicalName sampleTopic
sampleQueue, sampleTopic 会自动创建到 ActiveMQ。

猜你喜欢

转载自blog.csdn.net/tt07406/article/details/82084670