如何获取消息?使用 JMS 技术作为数据复制的解决方案
2009-11-06 00:00:00 来源:WEB开发网newQueueConnection =
getConnectionFactory().createQueueConnection(getUserName(),getPassword));
进行调用,我们必须调用
newQueueConnection = getConnectionFactory().createQueueConnection();
最后,您需要将特定于 JMS 的元素(如队列、队列管理器、队列工厂等等)提供给客户机。现在,使用 LDAP 和 JNDI 的原因就变得很明显:我们使用 LDAP 服务器来存储这些元素并使用外部文件保存那些 LDAP 对象的键。LDAP 服务器可以作为 JNDI 服务器并通过返回存储的对象来响应名称查询。这就是清单 2 中代码的工作原理。JMS 元素的名称可从类的静态变量(对于缺省名称)或者外部文件(使用非缺省的其它名称)中获取。简而言之,向 LDAP 服务器请求键(我们正讨论的)中存储的对象,并返回我们感兴趣的 JMS 对象(在这种情况下)。
我们基于 JMS 的解决方案通过使用现有的组件更方便地实现统一的、跨平台和交叉供应商的配置环境。现在我们的代码已尽可能地成为独立于特定于平台和特定于供应商的设置。
应用程序
应用程序中有两个关键组件:发送器和接收器。发送器启动一个后台程序,它在目录中轮询需要存档的文件,而接收器只是等待将要传递的 JMS 消息,然后将该消息中包含的文件存档。JMS API 使我们几乎无需关注正使用的特定 JMS 实现就可以定义这些组件。
发送器由三个主要部件组成:
JMSProvider,用于创建连接
ConnectionPool,用于获取现有的空闲连接(我们称之为 JMSConnection)
轮询程序,监视需要传送的文件。
在启动时,使用 JMSProvider 来创建一些到 JMS 服务器的准备就绪的连接。这些连接放置在池中,然后启动轮询程序。当轮询程序检测到需要传送文件时,它就创建一个独立线程来处理这个文件。(可以通过派生(forking),创建一个独立的线程来创建消息和进行传送操作,描述该过程非常简单。但在实际应用中,常常将合用(pooling)与循环组合起来使用,这样可以确保很少创建新线程,而是重用线程。但是,那个过程相当复杂,过多的说明会分散本文的中心主题 ― JMS。)
更多精彩
赞助商链接