Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere

路漫漫,长修远,我们不能没有钱
随笔 - 172, 文章 - 0, 评论 - 257, 引用 - 0
数据加载中……

JAVA MESSAGE SERVICE的概念与体系结构(转自计算机世界i社区)

 企业信息产品正在成为使内部公司运作一体化的基本部件,也让一些相互独立的商业部件利用它组合成一个可靠的、更灵活的、有弹性的系统。另外对于传统的 MOM提供商,企业信息产品也是被一些有名的数据库开发商和许多与internet相联系的公司所提供。Java语言客户端和Java语言中间层肯定有能 力结合和使用这些企业信息产品,那么JMS(Java message service)提供了这种能力,它是以SUN公司领导和发起开发的一套标准的JAVA API。这套JAVA API(JMS API)提供了一个标准的方法去建立、发送、和接收一个企业信息系统的信息,它是一个接口的集合并且定义了一个JMS客户端如何获取企业信息产品的工具的 一套规则。因为信息是对等的, 所有的JMS客户一般都被当作客户端来看待。JMS API也可以
和其他的JAVA API相结合,它甚至和JDBC API在同一个事务内运作而相安无事,它也可以直接地和Java Transaction API (JTA)、Java Transaction Service API (JTS)一起工作。不要把JMS API当作JavaBeans,它最初的设计并不是作为JavaBeans部件来设计的,但是JavaBeans能够使用它的session发送和接收信 息。不要忘了Java Naming and Directory Interface API(JNDI), 没有它我们也无法配置和寻找JMS对象。
  JMS的应用有以下几个部分组合而成:
一、    JMS Clients: 它们是java 语言程序用来发送和接收信息的。
二、    Non-JMS Clients: 它们是本地的信息系统的API构建的而不是用JMS API。
三、    Messages: 每一个应用都要定义一个信息集合用来在客户端进行信息通讯。
四、    JMS Provider: 实现JMS的一个信息系统,除了管理和控制之外,这也是一个完整的信息产品的必须的特征。
五、    Administrated Objects: 由客户端预先配置创建的JMS对象。
    JMS的管理方法:
有两个JMS管理对象的类型:
一、    ConnectionFactory:  客户端用这个对象创建连接。
二、    Destination: 客户端指定的接收或发送的一个信息源。
管理者将Administrated Objects放在一个叫JNDI namespace的地方。
JMS两种信息风格:
一、    POINT-TO-POINT(PTP)
二、    PUBLISH-AND-SUBSCRIBE(PUB/SUB)
JMS的接口:
  根据采用的信息风格其接口对象也是不同的:
公用对象:
  ConnectionFactory、Connection、Destination、Session、MessagerPoducer、MessageConsumer
PTP专用对象:
  QueueConnectionFactory、QueueConnection、Queue、QueueSession、QueueSender、QueueReceiver or QueueBrowser
PUB/SUB专用对象:
  TopicConnectionFactory、TopicConnection、Topic、TopicSession、TopicPublisher、TopicSubscriber

开发一个JMS客户端的流程:
一、    用JNDI找到一个ConnectionFactory对象。
二、    用JNDI找到一个Destination对象。
三、    用ConnectionFactory对象建立一个JMS Connection对象。
四、    用JMS Connection对象建立一个或多个JMS Session对象。
五、    用一个Session和Destination建立一个MessageProducer和MessageConsumer对象。
六、    用Connection对象开始信息递交。
JMS的多线程:
     JMS对象中有一部分是被自动共享的,因此JMS限制那些被自动共享的对象使之不能够被一个多线程的程序所存取,下面列出了哪些对象能够被共享:
       自动共享的对象:
一、    Destination
二、    ConnectionFactory
三、    Connection
       不被共享的对象:
一、    Session
二、    MessageProducer
三、    MessageConsumer
        JMS消息的格式:
        JMS提供了系列的API来完成信息的格式,我们必须严格按照这些格式来传递信息。
一、    信息头
        JMSDestination,JMSDeliveryMode,JMSExpiration,JMSPriority,
        JMSMessageID,JMSTimestamp,JMSCorrelationID,JMSReplyTo,
        JMSType,JMSRedelivered
二、    信息属性
        JMSXUserID,JMSAppID,JMSXDeliveryCount, JMSXGroupID,
        JMSXGroupSeq,JMSXProducerTXID,JMSXConsumerTXID,
        JMSXRcvTimestamp,JMSXState
三、    信息体(提供了五种信息体,每一种信息体有自己专用的接口)
        StreamMessage,MapMessage,TextMessage,ObjectMessage,BytesMessage

posted on 2006-02-07 10:37 Khan 阅读(654) 评论(0)  编辑 收藏 引用 所属分类: Java


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理