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

- 从 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和dOUT.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 文件。
- 将 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 节点来实现请求-响应场景。
学习
- WebSphere Message Broker 参考资料
- WebSphere Message Broker V8 信息中心
所有 WebSphere Message Broker 文档的单一 Web 门户,包含有关安装、配置和使用 WebSphere Message Broker 的概念、任务和参考信息。 - WebSphere Message Broker 开发人员参考资料页面
这些技术资料可帮助您使用 ebSphere Message Broker 对不同服务、应用程序和平台进行连接、统一数据转换和企业级集成,以增强您的 SOA。 - WebSphere Message Broker 产品页面
产品描述、产品新闻、培训信息、支持信息等。 - 下载 WebSphere Message Broker 的免费试用版
WebSphere Message Broker 是一个为异构 IT 环境中的统一连接和转换而构建的 ESB。它实时地将业务事件所收集的信息和数据分发给企业内外的人员、应用程序和设备。 - WebSphere Message Broker 文档库
WebSphere Message Broker 规范和手册。 - WebSphere Message Broker 论坛
获得技术问题的答案,以及与其他 WebSphere Message Broker 用户分享您的专业技能。 - WebSphere Message Broker 支持页面
支持问题及其解决方案的一个可搜索的数据库,还包含下载、修复程序和问题跟踪。 - IBM 培训课程:WebSphere Message Broker V8 开发
这个来自 IBM Training 的课程介绍了如何使用 WebSphere Message Broker 开发和运行时环境的组件来开发使用 ESQL、Java 和 PHP 转换消息的消息流,以及如何排除其问题。 - Youtube 教程:将 Microsoft .NET 代码集成到 WebSphere Message Broker V8 消息流中
这个 5 分钟的 youtube 教程展示了使用 WebSphere Message Broker V8 构建一个包含 Microsoft .NET 代码的消息流有多简单。Microsoft Visual Studio 用于使用 C# 构建 .NET 代码,这些代码然后集成到一个使用 Message Broker 和 HTTP RESTful 接口的界面中。
- WebSphere Message Broker V8 信息中心
- WebSphere 参考资料
- developerWorks WebSphere 开发人员参考资料
面向使用 WebShpere 产品的开发人员的技术信息和参考资料。developerWorks WebSphere 提供了产品下载、操作信息、支持资源,还提供了一个包含 2000 多篇技术文章、教程、最佳实践、IBM 红皮书和在线产品手册的免费技术库。 - developerWorks WebSphere 应用程序集成开发人员参考资料
操作文章、下载、教程、教育、产品信息和其他参考资料,可帮助您构建 WebSphere 应用程序集成和业务集成解决方案。 - 最流行的 WebSphere 试用版下载
关键 WebShpere 产品的免费的试用版下载。 - WebSphere 论坛
特定于产品的论坛,您可在其中获得技术问题的答案,以及与其他 WebSphere 用户分享您的专业技能。 - WebSphere 点播演示
下载和观看这些自动运行的演示,了解 WebSphere 产品和技术如何帮助您的公司应对快速变化且愈加复杂的业务环境。 - developerWorks 上的 WebSphere 相关文章
由 IBM 内外的从顶级从业人员和顾问开发的 3000 多篇与 WebSphere 和相关技术相关的已编辑和分类的文章。搜索您需要的信息。 - developerWorks WebSphere 每周时事通讯
developerWorks 时事通讯提供了仅与您关注的主题相关的最新文章和信息。除了 WebSphere,您还可选择 Java、Linux、开源、Rational、SOA、Web 服务和其他主题。立即订阅并设计您的自定义邮件。 - 来自 IBM Press 的 WebSphere 相关图书
通过 Barnes & Noble 实现便捷的在线订购。 - WebSphere 相关事件
WebSphere 开发人员感兴趣的全球大会、路演、网络广播和其他活动。
- developerWorks WebSphere 开发人员参考资料
- developerWorks 参考资料
- IBM 软件产品试用版下载
精选的 IBM® DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 产品的免费试用版下载。 - developerWorks 业务流程管理开发人员参考资料
BPM 操作文章、下载、教程、教育、产品信息和其他参考资料,可帮助您建模、组装、部署和管理业务流程。 - developerWorks 博客
加入与 developerWorks 用户和作者以及 IBM 编辑和开发人员的对话。 - developerWorks 技术简报
IBM 专家主办的免费技术会议,可加快您的学习进度,帮助您在最具挑战的软件项目中取得成功。会话涉及从一小时的虚拟简报到全球各大城市为期半天和全天的实况会议。 - developerWorks 播客
收听与软件创新者举行的有趣且不同寻常的访谈和讨论。 - Twitter 上的 developerWorks
查阅最新的 Twitter 消息和 URL。 - IBM Education Assistant
一组多媒体教育课件,将帮助您更好地理解 IBM 软件产品,更有效地使用它们来满足您的业务需求。
- IBM 软件产品试用版下载
讨论
- 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
- 加入 IBM 软件下载与技术交流群组,参与在线交流。

Lingachary Eswarachary 是美国 IBM Software Services for WebSphere 的一名资深 WebSphere 集成架构师。他在 IT 行业拥有 17 年的从业经验,其中 10 年都在 IBM Software Group 中研究连通空间 (connectivity space)。他负责构造、设计和实现 WebSphere 解决方案,使用 Smart SOA 方法为端到端软件开发周期提供支持。他擅长的领域包括 WebSphere DataPower、WebSphere Message Broker、WebSphere MQ 和 WebSphere Transformation Extender。他是一名 IBM 红皮书作者和经过认证的 SOA 助理,曾获得过多项 IBM 产品认证。他帮助开展了 IBM 产品认证计划,执行有关 WebSphere 和相关产品的培训和研讨会。您可以通过 lingeswa@us.ibm.com 联系 Lingachary。