003.JMS概述

1. 基本概念

  • JMS:Java Message Service, Java消息服務,是Java EE中的一個技術。
  • JMS規範:JMS定義了Java中訪問消息中間件的接口,並無給予實現,實現JMS的接口的消息中間件稱爲JMS Provider,例如ActiveMQ。
  • JMS message:JMS消息,其由一下三部分組成:
    1. 消息頭:每一個消息頭字段都有相應的gettersetter方法;
    2. 消息屬性:若是須要除消息頭字段之外的值,那麼可使用消息屬性;
    3. 消息體:封裝具體的消息數據。
  • JMS producer:消息生產者,建立和發送JMS消息的客戶端應用。
  • JMS consumer:消息消費者,接收和處理JMS消息的客戶端應用。
    消息的消費者能夠採用如下兩種方法之一:
    1. 同步消費:經過調用consumerreceives方法從destination中顯示提取消息,receive方法能夠一直阻塞到消息到達(或設定的等待超時時間);
    2. 異步消費:客戶端能夠爲consumerJMS Provider中註冊一個消息監聽器,以定義在消息到達時所採起的動做。
  • JMS Browser:一個消息的觀察者,只看消息,不會對消息的狀態形成影響。
  • JMS domains:消息傳遞域,JMS規範中定義了兩種消息傳遞域:點對點消息傳遞域(point-to-point,簡寫成PTP)和發佈/訂閱消息傳遞域(publish/subscribe,簡寫成pub/sub)。
    1. PTP消息傳遞域的特色以下:
      • 每一個消息只能有一個consumer,但一個Queue能夠有多個consumer
      • 消息的生產者和消費者之間沒有時間上的相關性。也就是說不管消費者在生產者發送消息的時候是否處於運行狀態,它均可以提取消息;
      • 在PTP消息傳遞域中,Destination被稱爲隊列(Queue)
    2. PUB/SUB消息傳遞域的特色以下:
      • 每一個消息能夠有多個consumer
      • Producerconsumer之間有時間上的相關性。Subscribe一個Topicconsumer只能消費自它subscribe以後發佈的消息。JMS規範容許客戶建立持久訂閱,這在必定程度上放鬆了時間上的相關性要求。持久訂閱容許consumer消費它在未激活狀態時,由producer發佈的消息;
      • 在PUB/SUB消息傳遞域中,Destination被稱爲主題(Topic)

2. JMS開發概念

  • Connection Factory:鏈接工廠,用來建立鏈接對象,以鏈接到JMS的provider;
  • JMS Connection:封裝了客戶與JMS提供者之間的一個虛擬的鏈接;
  • JMS Session:是生產和消費消息的一個單線程上下文;
    會話用於建立消息生產者(producer)、消息消費者(consumer)、消息目的地(Destination)消息(message)等。會話提供了一個事務性的上下文,在這個上下文中,一組發送和接收被組合到了一個原子操做中;
  • Destination:消息發送到的目的地;
  • Acknowledge:簽收;
  • Transaction:事務;
Session javax.jms.Connection.createSession(boolean transacted, int acknowledgeMode) throws JMSException
  • JMS Client:用來收發消息的Java應用;
  • Non-JMS Client:使用JMS provider本地API寫的應用,用來替換JMS API實現收發消息的功能,一般會提供其餘的一些特性,好比:CORBA、RMI等;
  • Administered Objects:預約義的JMS對象,一般在provider規範中有定義,提供給JMS客戶端來訪問,好比: ConnectionFactory和Destination;
相關文章
相關標籤/搜索