手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>Java技术>列表

消息传递和 Java 消息服务(JMS)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

ObjectMessages
顾名思义,ObjectMessage 是包装了 Java 对象的消息。任何可序列化的 Java 对象均可用作 ObjectMessage。如果多个对象必须在单个消息中传输,那么可以使用包含几个可序列化对象的 Collection 对象(比如 List 或 Set)。

下面展示了如何创建 Object 消息:

ObjectMessage message = session.createObjectMessage();
message.setObject(myObject);

关于 JNDI
像许多 J2EE API 一样,JMS 利用了 JNDI(Java 命名和目录接口)来发现所需资源。详细讨论 JNDI 超出了本文的范围,但可从如下地址找到更多的进一步信息:Java 命名和目录接口 (JNDI)。

构建 JMS 客户端
可以遵循下面的基本步骤来构建典型的 JMS 客户端:

创建到消息传递系统提供商的连接。
创建会话用于发送和接收消息。
创建 MessageProducers 和 MessageConsumers 来创建或接收消息。
一旦这些步骤执行完毕,消息生产的客户端将创建消息,并把它们发布到主题,而消息消费的客户端将侦听与主题有关的消息,并在它们到达时消费它们。

为了详细展示它是如何工作的,我们研究了典型的消息生产者,它用于在 pub/sub 消息传递系统中把消息发布到特定的主题。注意,为简洁起见,省略了所有异常处理代码。

创建连接
连接为客户端提供了对基础消息传递系统的访问,并执行资源分配和管理。连接是使用 ConnectionFactory 创建的,而 ConnectionFactory 通常是使用 JNDI 查找的。

下面这些代码展示了创建连接过程中涉及的一些步骤:

Context messaging = new InitialContext();
// get JNDI context
TopicConnectionFactory topicConnectionFactory =
(TopicConnectionFactory)
messaging.lookup("TopicConnectionFactory");
TopicConnection topicConnection =
topicConnectionFactory.createTopicConnection();


创建会话
会话是轻量级 JMS 对象,它提供了用于生产和消费消息的上下文。会话用于生成消息生产者和消息消费者,以及用于生成消息本身。

TopicSession session =
topicConnection.createTopicSession(false,
Session.CLIENT_ACKNOWLEDGE);

createTopicSession() 的两个参数控制事务和消息的确认。

查找主题
主题(也称标题、组或频道)是通过 JNDI 来查找的。主题标识了发送中或接收中的消息。在发布/阅系统中,订阅者订阅了指定的主题,而发布者把主题与它们发布的消息关联。

这里我们创建了一个称为“WeatherData”的主题。

Topic weatherTopic = messaging.lookup("WeatherData");

启动连接
在上面的初始化过程中,为了防止初始化期间出现不可预知的行为,消息流是被禁止的。一旦初始化完成,必须告诉连接开始消息流。

topicConnection.start();

创建消息生产者
在发布/订阅领域中,生产者把消息发布到指定主题。下面代码展示了发布者的创建及后续的简单文本消息的生成和发布。

TopicPublisher publisher =
session.createPublisher(weatherData);
TextMessage message = session.createMessage();
message.setText("temperature: 35 degrees");

publisher.publish(message);


创建订阅者及点对点系统的 JMS 客户端遵循相似的过程。可以在 [1] 中找到这一过程的完整细节。

结束语
我们已经看到在使用 JMS 来构建基于消息传递的应用程序的过程中涉及的基本概念。在编写 JMS 代码之前,你将需要访问符合 JMS 的消息传递系统。可从如下地址获取符合 JMS 的供应商的列表:

JMS 供应商


创建和构建基于 JMS 的应用程序是简单的,可是它为构建强大、可伸缩和高可靠的分布式系统提供了基础。

注意,JMS 远远比本文讨论的要复杂,并为下面的这些提供了支持:管理、安全、错误处理和恢复、优化、分布式事务、消息排序和消息确认等。

有关 Java Message Service 的进一步信息和文档,请参阅:

Java Message Service 文档

参考资料
本文中的许多内容是以 Java Message Service 文档 为基础的。

本文的再版须有 SunServer 许可。

上一篇: Weblogic8.1里面使用JDataStore的方法
下一篇: 用Java压缩文件或目录下的所有文件

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!