图1显示了JMS对象,用于提供JMS客户端与JMS服务提供者相连的对象。
ConnectionFactory是一个客户端用来创建一个Connection的管理对象。由于在Connection创建时有授权和通信建立过程,因此这个对象是比较大的。 Destination对象将一个消息的目的和服务提供者有关的地址及配置信息包装起来。 Session是JMS实体,用来支持事务处理和异步消息消费。JMS并不需要客户端的代码用于异步消息消费或能处理多个并发消息。通常,事务的复杂性都由一个Session来封装。 一个Session是一个原子单位的工作,与数据库的事务一样,要实现多线程事务比较困难。Session提供了在一个线程编程模式下的并发的优点。 MessageProducer和MessageConsumer对象由Session对象创建。用于发送和接受消息。为了确保消息的传递,JMS服务提供者处理的消息都要处于PERSISTENT模式。PERSISTENT模式使得JMS提供者出问题后,也能让消息保存下来。 Session,MessageProducer和MessageConsumer都不支持并发,而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); 创建一个JMS客户端程序 一个典型的JMS客户端由下面的几个基本步骤来创建: 创建一个到消息系统提供者的连接(Connection) 创建一个Session,用于接收和发送消息 创建MessageProducer和MessageConsumer来创建和接收消息 当完成了上述步骤后,一个消息产生者客户端将创建并发布消息到一个主题,而消息使用者客户端会接收与一个主题相关的消息。 1.创建一个Connection 一个Connection提供客户端对底层的消息系统的访问。并实现资源的分配和管理。通过使用一个ConnectionFactory来创建一个Connection,通常用JDNI来指定:
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18