快速业务通道

如何获取消息?使用JMS技术作为数据复制的解决方案 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
可靠性。

图 1. 高级系统体系结构

现有的基础结构在每个客户机上有一个系统,当接线员与用户之间进行交互时,它创建多媒体文件,以此作为响应。此外,还需对这些文件进行存档。我们的系统启动一个进程(运行在每个机器上)并在已知目录中查找这些文件。当检测到新文件时,进程将它们打包成 JMS 有效负载并发送到其中一个数据中心的 JMS 服务器以便传递。一旦 JMS 服务器确认收到,则除去发送方中的这些文件。JMS 服务器将该数据传送到数据中心内的一个可用处理程序上,进行存档。

如何获取消息?使用JMS技术作为数据复制的解决方案(2)

时间:2011-01-25 IBM Daniel Drasin

主要概念

JMS 是特定于 Java 的消息传递和排队的实现。在消息传递和排队中有两个基本思想:

系统通过使用不连续的数据包进行通信,这些数据包都有一个有效负载(即要传送的信息)和属性(即该信息的特征以及它应如何通信)。这个数据包称为 消息。

消息不是被发送给系统,而是被发送到一个独立的保存区域。可以根据您的需要确定保存区域的数量,通过唯一的名称,可以标识并定位它们。每个保存区域都可以接收消息,并且根据配置的不同,该区域将每个消息要么传递给所有感兴趣的系统(发布-订阅),要么传递给第一个感兴趣的系统(点对点)。这个保存区域称为 目的地。

我们构建的系统采用点对点的目的地,在 JMS 中称为队列。排队是图 1 中显示的系统设计的一个重要方面。该图显示了消息正从 JMS 代理直接传送到接收方的客户机上,但这并不十分准确。实际上,消息被传送到一个队列中,接收方客户机从队列中检索它们。稍后我们研究实现细节时,这个区别将变得非常重要,因为它让系统并行地处理收到的消息。

跨平台和交叉供应商

对我们客户机来说尽量减少对某家供应商的依赖,这意味着,我们所设计的代码应该使由于更改了 JMS 供应商而带来的影响降至最低,这是十分重要的。JMS 的一个主要优点是它以广泛的业界支持和开放标准为基础,因此有了正确设计的代码,我们就可以让系统使用任何 JMS 系统。(可以对现有系统进行直接改进,专门设计来使系统在某套硬件上运行并能与特定于供应商的解决方案相匹配。)

通过将所有特定于供应商的调用封装在称为 JMSProvider 的类中,就可以轻松实现平台独立性。这些 Provider 类处理特定于供应商的问题,例如工厂查询、错误处理、连接创建和消息特性设置等。请参阅下面清单 1 中的示例代码。

清单 1. 在类 ar.jms.JmsProvider 中

public QueueConnection createConnection() throws JMSException {     return getConnectionFactory().createQueueConnection(getUserName(),       getPassword()); }

通过利用“Java 命名和目录接口(JNDI)”,我们将特定于供应商的设置存储在一个资源库(例如,LDAP 库)中,这样实际代码就几乎不需要特定于供应商的引用。只需要少量特定于供应商的代码来处理一些特性,但是可以将这样的代码限定于一些“适配器”类,并将它保存在应用程序代码之外。请参阅下面清单 2 中的示例代码。因为 JMS 被设计用来方便地使用 JNDI,所以与其它解决方案相比,这是另一个直接优点 ― 配置信息的集中存储不仅可以保存基于文本的信息,而且还可以存储已配置的对象。

清单 2. 在类 ar.jms.JmsProvider 中

public final static String   CONNECTION_FACTORY_LOOKUP_NAME_KEY = "CONNECTION_FACTORY_LOOKUP_NAME"; public final static   String FILE_TRANSFER_QUEUE_LOOKUP_NAME_KEY =   "FILE_TRANSFER_QUEUE_LOOKUP_NAME"; public final static String   JMS_PROVIDER_CLASS_KEY = "JMS_PROVIDER_CLASS&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号