帶你走進EJB--JMS程式設計模型
在上篇文章中我們已經對JMS的基本模型有了基本的瞭解.下面內容主要是通過一張圖來了解JMS的程式設計模型,並用一個例項來進行輔助說明.
下面這張圖是JMS的程式設計模型,
Connection Factory
建立Connection物件的工廠,針對兩種不同的JMS訊息模型,分別有QueueConnectionFactory和TopicConnectionFactory兩種。可以通過JNDI來查詢ConnectionFactory物件。
//獲取上下文資訊
InitialContextcontext = new InitialContext();
//建立QueueConnectionFactory
QueueConnectionFactoryfactory=(QueueConnectionFactory)context.lookup("ConnectionFactory");
Connection
Connection表示在客戶端和JMS系統之間建立的連結(對TCP/IP socket的包裝)。Connection可以產生一個或多個Session。跟ConnectionFactory一樣,Connection也有兩種型別:QueueConnection和TopicConnection。
//建立QueueConnection
QueueConnectionqueueConnection= factory.createQueueConnection();
Session
Session是我們操作訊息的介面。可以通過session建立生產者、消費者、訊息等。Session提供了事務的功能。當我們需要使用session傳送/接收多個訊息時,可以將這些傳送/接收動作放到一個事務中。同樣,也分QueueSession和TopicSession。
//建立QueueSession
QueueSessionqueueSession =queueConnection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
Destination
Destination
可以通過JNDI來查詢Destination。
//獲取Destination物件
Queuequeue = (Queue)context.lookup("queue/myqueue");
訊息生產者
訊息生產者由Session建立,並用於將訊息傳送到Destination。同樣,訊息生產者分兩種型別:QueueSender和TopicPublisher。可以呼叫訊息生產者的方法(send或publish方法)傳送訊息!
//建立文字物件
TextMessagetextMessage = queueSession.createTextMessage("hello world!");
//建立傳送者
QueueSendersender = queueSession.createSender(queue);
//傳送訊息
sender.send(textMessage);
訊息消費者
訊息消費者由Session建立,用於接收被髮送到Destination的訊息。兩種類 型:QueueReceiver和TopicSubscriber。可分別通過session的createReceiver(Queue)或createSubscriber(Topic)來建立。當然,也可以通過session的createDurableSubscriber方法來建立持久化的訂閱者。
MessageListener
訊息監聽器。如果註冊了訊息監聽器,一旦訊息到達,將自動呼叫監聽器的onMessage方法。EJB中的MDB(Message-Driven Bean)就是一種MessageListener。
以上內容為JMS的程式設計模型,在這裡我們對JMS的程式設計模型有一個巨集觀瞭解,可以幫我們去更好的去理解MDB,這裡作為一個鋪墊.