1. 程式人生 > >帶你走進EJB--JMS程式設計模型

帶你走進EJB--JMS程式設計模型

在上篇文章中我們已經對JMS的基本模型有了基本的瞭解.下面內容主要是通過一張圖來了解JMS的程式設計模型,並用一個例項來進行輔助說明.

下面這張圖是JMS的程式設計模型,

計算機生成了可選文字:t"re"e'勸.jCreateSC限stes51'OtesiVesFrom日

Connection Factory

     建立Connection物件的工廠,針對兩種不同的JMS訊息模型,分別有QueueConnectionFactoryTopicConnectionFactory兩種。可以通過JNDI來查詢ConnectionFactory物件。

//獲取上下文資訊

InitialContextcontext = new InitialContext();

//建立QueueConnectionFactory

QueueConnectionFactoryfactory=(QueueConnectionFactory)context.lookup("ConnectionFactory");

Connection

     Connection表示在客戶端和JMS系統之間建立的連結(對TCP/IP socket的包裝)。Connection可以產生一個或多個Session。跟ConnectionFactory一樣,Connection也有兩種型別:QueueConnectionTopicConnection

    //建立QueueConnection

    QueueConnectionqueueConnection= factory.createQueueConnection();

Session

     Session是我們操作訊息的介面。可以通過session建立生產者、消費者、訊息等。Session提供了事務的功能。當我們需要使用session傳送/接收多個訊息時,可以將這些傳送/接收動作放到一個事務中。同樣,也分QueueSessionTopicSession

     //建立QueueSession

QueueSessionqueueSession =queueConnection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);

Destination

      Destination

的意思是訊息生產者的訊息傳送目標或者說訊息消費者的訊息來源。對於訊息生產者來說,它的Destination是某個佇列(Queue)或某個主題(Topic);對於訊息消費者來說,它的Destination也是某個佇列或主題(即訊息來源)。所以,Destination實際上就是兩種型別的物件:QueueTopic

可以通過JNDI來查詢Destination

       //獲取Destination物件

Queuequeue = (Queue)context.lookup("queue/myqueue");

訊息生產者

     訊息生產者由Session建立,並用於將訊息傳送到Destination。同樣,訊息生產者分兩種型別:QueueSenderTopicPublisher。可以呼叫訊息生產者的方法(sendpublish方法)傳送訊息!

       //建立文字物件

TextMessagetextMessage = queueSession.createTextMessage("hello world!");

//建立傳送者

QueueSendersender = queueSession.createSender(queue);

//傳送訊息

sender.send(textMessage);

訊息消費者

   訊息消費者由Session建立,用於接收被髮送到Destination的訊息。兩種類 型:QueueReceiverTopicSubscriber。可分別通過sessioncreateReceiver(Queue)createSubscriber(Topic)來建立。當然,也可以通過sessioncreateDurableSubscriber方法來建立持久化的訂閱者。

MessageListener

    訊息監聽器。如果註冊了訊息監聽器,一旦訊息到達,將自動呼叫監聽器的onMessage方法。EJB中的MDBMessage-Driven Bean)就是一種MessageListener

以上內容為JMS的程式設計模型,在這裡我們對JMS的程式設計模型有一個巨集觀瞭解,可以幫我們去更好的去理解MDB,這裡作為一個鋪墊.