JMS笔记


    JMSJava平台上有关面向消息中间件(MOM)的技术规范。

    消息是JMS中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成;消息主体则携带着应用程序的数据有效载荷(包括TextMessageObjectMessageMapMessageBytesMessageStreamMessage,以及无有效负载的消息)。

    JMS的元素:

1. JMS提供者:连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台JMS实现,也可以是非Java平台的面向消息中间件的适配器;

2. JMS客户:生产或消费基于消息的Java的应用程序或对象;

3. JMS生产者:创建并发送消息的JMS客户;

4. JMS消费者:接收消息的JMS客户;

5. JMS消息:包括可以在JMS客户之间传递的数据的对象;

6. JMS队列:一个容纳那些被发送的等待阅读的消息的区域;

7. JMS主题:一个支持发送消息给多个订阅者的机制。


    JMS消息通常有两种模型:

1. 点对点:在点对点的消息系统中,消息分发给一个单独的使用者。点对点消息往往与对列相(javax.jms.Queue)关联。生产者不需要接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态;

2. 发布/订阅:发布/订阅消息系统支持一个事件驱动模型,消息生产者和消费者都参与消息的传递。生产者发布事件,消费者订阅感兴趣的事件,并使用事件。该类消息一般与特定的主题(javax.jms.Topic)关联。


    JMS提供了将应用与提供数据的传输层相分离的方式。同一组Java类可以通过JNDI中关于提供者的消息,连接不同的JMS提供者。


JMS的消息传递方式:

1. NON_PERSISTENT:最多投递一次;

2. PERSISTENT:使用暂存后再转送的机理投递。如果一个JMS服务离线,那么持久性消息不会丢失但得等到这个服务恢复联机时才会被传递;


应用程序:

1. ConnectionFactory接口(连接工厂)

用户用来创建连接到JMS提供者的连接的被管对象。JMS客户可以通过可移植的接口访问连接,这样当下层的实现改变时,代码不需要进行修改。管理员在JNDI名字空间中配置连接工厂,这样JMS客户才能够查找它们。根据消息类型的不同,用户将使用队列或主题连接工厂。

2. Connection接口(连接)

连接代表了应用程序和消息服务器之间的通信链路。载获得了连接工厂后,就可以创建一个与JMS提供者的连接。根据不同的连接类型,连接允许用户创建会话,以发送和接收队列和主题到目标。

3. Destination接口(目标)

目标是一个包装了消息目标标识符的被管对象,消息目标是指消息发布和接收的地点,或者队列,或者是主题。JMS管理员创建这些对象,然后用户通过JNDI发现它们。和连接工厂一样,管理员可以创建两种类型的目标,点对点模型的队列,以及发布者/订阅者模型的主题。

4. MessageConsumer接口(消息消费者)

由会话创建的对象,用于接收发送到目标的消息。消费者可以同步地(阻塞模式),或(非阻塞)接收队列和主题类型的消息。

5. MessageProducer接口(消息生产者)

由会话创建的对象,用于发送消息到目标。用户可以创建某个目标的发送者,也可以创建一个通用的发送者,在发送消息时指定目标。

6. Message接口(消息)

是在消费者和生产者之间传送的对象,也就是从一个应用程序传送到另一个应用程序。包括消息头(必选),消息属性,消息体。

7. Session接口(会话)

表示一个单线程的上下文,用于发送和接收消息。由于会话是单线程的,所以消息是连续的,按照发送的顺序一个一个接收的。会话的好处在于它支持事务。如果用户选择了事务支持,会话上下文将保存一组消息,直到事务被提交才发送这些消息。


你可能感兴趣的:(JMS笔记)