孤独海岸线 发表于 2017-1-6 10:22:22

集成 WebSphere Message Broker 与 Apache ActiveMQ

  简介
  Apache ActiveMQ(以下简称 ActiveMQ)是最流行、最强大的开源消息代理和消息服务器。它支持 JMS 1.1 和 J2EE 1.4。因为许多企业正在将开源技术集成到其消息基础架构中,所以本文将使用一个示例消息来展示如何配置 IBM® WebSphere® Message Broker(以下简称 Message Broker),使它能够以 JMS 提供程序的身份与 Apache ActiveMQ 集成。
  为了展示 Message Broker 与 ActiveMQ 的集成,本文将使用集成即服务 (IaaS) 提供程序 Meddius,它使用 ActiveMQ 通过 JMS 提供了一个 HL7 解决方案。在下图中,ActiveMQ 通过 JMS 从 Meddius 接收 HL7 消息,将它们转发给 Message Broker(它使用自己的 Compute 节点来处理它们),然后将 HL7 事务写入一个数据库表中。
  
图 1

  配置 ActiveMQ


[*]从 Apache ActiveMQ 网站 将 ActiveMQ V5.7 下载并安装到一台安装了 Message Broker Toolkit 的 Microsoft Windows 机器上。
[*]完成安装之后,启动 ActiveMQ 消息代理:运行批处理文件 apache-activemq-5.6.0\bin\activemq.bat。直到在控制台输出中看到以下消息:

图 2

[*]打开一个浏览器窗口,然后在 URL 框中输入 http://localhost:8161/admin,以便打开 ActiveMQ 管理控制台:

图 3

[*]单击 Queues 选项卡并创建两个队列:IN.Q 和d OUT.Q:

图 4

[*]创建一个包含如下所示内容的 JNDI 属性文件,将它保存为 jndi.properties:


java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = vm://localhost
connectionFactoryNames =
connectionFactory, queueConnectionFactory, topicConnectionFactory
queue.jmsINQ = IN.Q
queue.jmsOUTQ = OUT.Q




  jmsINQ 和 jmsOUTQ 分别对应于物理队列 IN.Q 和 OUT.Q 的 JMS 目标。

[*]也可使用一个名为 ConnectionFactory 的预定义连接工厂,为实际队列名称添加 dynamicQueues/ 作为前缀,以避免创建 jndi.properties 文件。
  配置 WebSphere Message Broker


[*]将 ActiveMQ JAR 文件 activemq-all-5.6.0.jar 复制到 Message Broker 共享类目录。
[*]将上面创建的 jndi.properties 文件复制到 Message Broker 类目录。
  配置消息流


[*]启动 Message Broker Toolkit 并创建一个消息流,如下所示:

图 6

[*]这个消息流从 jmsINQ 读取消息,处理它们,然后将 HL7 事务写入一个数据库表中。
[*]配置 JMS Input 节点的 JMS 连接参数,如下所示:

图 7


  也可定义一个 JMSProvider 可配置服务,将该节点配置为使用该可配置服务。如果选择创建动态队列而不使用 jndi.properties 文件,那么可以将连接工厂名配置为 ConnectionFactory。

[*]配置 JMS Input 节点的 Basic 选项卡,如下所示。如果选择创建动态队列,那么可以将源队列配置为 dynamicQueues/IN.Q。

图 8

[*]将处理节点添加到 Compute 节点中,然后创建 SQL 查询,将已处理的事务写入 Database 节点中的某个数据库表中。
[*]编译消息流并创建一个 BAR 文件。
[*]如果代理正在运行,则停止它。
[*]启动代理。
[*]使用您创建的 BAR 文件来部署消息流。
[*]检查代理日志文件,确保已建立 JMS 与 ActiveMQ 的连接。
  测试消息流


[*]在 ActiveMQ 管理控制台上,单击 Send 选项卡:

图 9

[*]将一个示例 HL7 消息放在 IN.Q 上:

图 10


测试消息正文的详细内容如下所示:


MSH|^~\&|EPIC|EPICADT|SMS|SMSADT|199912271408|CHARRIS|ADT^A04|1817457|D|2.5|
PID||0493575^^^2^ID 1|454721||DOE^JOHN^^^^|DOE^JOHN^^^^|19480203|M||B|254 MYSTREET
AVE^^MYTOWN^OH^44123^USA||(216)123-4567|||M|NON|400003403~1129086|
NK1||ROE^MARIE^^^^|SPO||(216)123-4567||EC|||||||||||||||||||||||||||
PV1||O|168 ~219~C~PMA^^^^^^^^^||||277^ALLEN MYLASTNAME^BONNIE^^^^||||||||||
||2688684|||||||||||||||||||||||||199912271408||||||002376853



[*]检查数据库,确保 HL7 事务已经写入数据库表中。
  结束语
  本文介绍了如何配置 WebSphere Message Broker JMS 节点,使它能够作为一个 JMS 提供程序与开源的 Apache ActiveMQ 消息服务器进行通信。您可以扩展上述解决方案,添加一个 JMSOutput 节点来实现请求-响应场景。
页: [1]
查看完整版本: 集成 WebSphere Message Broker 与 Apache ActiveMQ