JMS學習筆記(三)

在這一節中,我着重介紹一下JMS1.1中的公共接口,以及該接口下的重要方法

ConnectionFactory

ConnectionFactory 是一個可以從JNDI檢索的受管理對象,它建立了到提供者的連接。它包含 createConnection() 方法,該方法返回了一個 Connection 對象。



Connection

Connection 封裝了一個連接到提供者的活動連接。它的一些方法包括:

  • createSession(boolean, int):返回一個 Session 對象。boolean 參數指出 Session 是否被處理, int 則指出確認模式
  • start():激活提供者發送消息。
  • stop():臨時停止消息的發送,可以用 start() 重新開始發送。
  • close():關閉到提供者的連接,並釋放以它的名義佔用的所有資源。

Session

Session 是用來發送和接收消息的單線程的上下文。它的一些方法包括:

  • createProducer(Destination):返回一個 MessageProducer 對象,向指定的 Destination 發送消息。
  • createConsumer(Destination):返回一個 MessageConsumer 對象來接收來自指定 Destination 的消息。
  • commit():提交當前事務的所有使用的或者產生的消息。
  • rollback():回滾當前事務所有使用的或者產生的消息。
  • create<MessageType>Message(...):一組返回 <MessageType>Message 的方法——例如,MapMessageTextMessage 等。

Destination

Destination 封裝消息的目的地。它是一個從 JNDI 檢索的受管理對象。


MessageProducer

MessageProducer 用於發送消息。它的一些方法包括:

  • send(Message):發送指示的 Message
  • setDeliveryMode(int):設置後續消息的發送模式,有效值爲 DeliveryMode.PERSISTENT  DeliveryMode.NON_PERSISTENT
  • setPriority(int):設置後續發送消息的優先級,有效值爲 0 9
  • setTimeToLive(long):設置後續發送消息失效前的持續時間,以毫秒計。

MessageConsumer

MessageConsumer 被用來接收消息。它的一些方法包括:

  • receive():返回下一發到達的消息,該方法在消息可用之前會受到阻塞。
  • receive(long):接收在 long 毫秒內到達的下一個消息,如果在時間限制內沒有消息到達,則該方法返回 null
  • receiveNoWait:如果有一個消息立即可用,則接收下一個消息,如果沒有消息可用,則該方法返回 null
  • setMessageListener(MessageListener):設置 MessageListenerMessageListener 對象在消息到達時接收它們,也就是異步接收

MessageListener

MessageListener 是有一個單一方法——onMessage(Message)——的接口,它提供了消息的異步接收和處理。

應該通過客戶機類和該類使用 setMessageListener(MessageListener) 方法傳遞給 MessageConsumer 對象的實例來實現這個接口。在消息到達目的地時,用 onMessage(Message) 將它傳遞給對象。


對於之上的這些接口,都是JMS1.1中的重要接口以及其下的重要方法。

針對現在程序的開發現狀,我們不可能做到發送方和接收方都要一直進行通信,換句話說,也就是接收方不一定要實時的接收消息。現在基於異步消息通訊的機制,才能適應企業級應用開發。所以,對於這些接口中真正實現的異步接口,最重要的就是MessageListener接口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章