快速业务通道

J2EE的异步消息机制(上) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
umer都不支持并发,而ConnectionFactory,Destination和Connection都支持并发。

2.JMS应用程序开发

JMS中的消息

在消息系统中,应用程序之间通信的关键是消息。因此使用JMS必须要先理解消息。

在JMS中,消息由三部分组成:

MESSAGE HEADER用于识别消息,比如用于判断一个给定的消息是否是一个"订阅者"

PROPERITIES用于与应用程序相关的,提供者相关的和可选项的信息

BODY是消息的内容,支持几种格式,包括TextMessage(对String一个简单的封装)和ObjectMessage(对任意对象的封装,但必须支持序列化),也支持其他格式。

TextMessage

一个TextMessage是一个String对象的封装。在只有文本对象传递时,是很有用的。它假设许多消息系统是建立在XML上的。从而TextMessage就可以成为包装它们的容器。

创建一个TextMessage对象很简单,如下面的代码:

TextMessage message=session.createMessage();

message.setText("Hello, world!");

ObjectMessage

如名字所示,它是对一个JAVA对象的封装的消息。任何可序列化的JAVA对象都能用于ObjectMessage,如果必须将多个对象封装在一个消息里传递,可以使用Collection对象,来包括多个序列化对象。

下面是创建一个ObjectMessage

ObjectMessage message=session.createObjectMessage();

message.setObject(myObject);

J2EE的异步消息机制(上)(3)

时间:2010-09-13

创建一个JMS客户端程序

一个典型的JMS客户端由下面的几个基本步骤来创建:

创建一个到消息系统提供者的连接(Connection)

创建一个Session,用于接收和发送消息

创建MessageProducer和MessageConsumer来创建和接收消息

当完成了上述步骤后,一个消息产生者客户端将创建并发布消息到一个主题,而消息使用者客户端会接收与一个主题相关的消息。

1.创建一个Connection

一个Connection提供客户端对底层的消息系统的访问。并实现资源的分配和管理。通过使用一个ConnectionFactory来创建一个Connection,通常用JDNI来指定:

Connection message=new initialContext(); TopicConnectionFactory topicConnectionFactory=(TopicConnectionFactory); topic = (Topic) jndiContext.lookup(topicName); topicConnection =topicConnectionFactory.createTopicConnection();

2.创建一个Session

Session是一个比较大的JMS对象,他提供了生产和消费消息的手段。用于创建消息使用者和消息产生者。

topicSession = topicConnection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);

两个参数用于控制事务和消息确认。

3.定位一个Topic

用JDNI来定位一个Topic,Topic用于识别发送或接收的消息,在发布/订阅系统中。订阅者订阅一个给定的Topic,而发布者将它发布的消息与一个Topic相连。

下面是创建一个Topic "WeatherReport"

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

4.启动Connection

在上面的初始化步骤之后,消息流是禁止的,用于防止在初始化时发生不可预料的行为。一旦初始化结束,必须让Connection启动消息系统。

topicConnection.start();

5.创建一个消息产生者

在发布/订阅里,一个产生者发布消息到一个指定的Topic。下面的代码显示创建一个产生者,以及后续的建立和发布一个简单文本消息。

TopicPublisher publisher=session.createPublisher(weatherTopic);

TexeMessage message=session.createMessage();

message.setText("ssss");

publisher.publish(message);

下面是一个消息使用者的代码

topicConnection =topicConnectionFactory.createTopicConnection(); topicSession = topicConnection.createTopicS

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号