JMS 1.1 中的新內容:共用接口

介紹

在這一節中,我們將介紹 JMS 客戶機編程的每一個重要 JMS 公用接口和它們的一些方法。一定要記住,儘管公用接口是獨立於域的,但是客戶機代碼的行爲與運行時處於操作狀態的域的特定於域的行爲是相匹配的。

在下一節(用公用接口進行客戶機編程),我們將分析幾個進行 JMS 消息處理的示例代碼。

ConnectionFactory

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

Connection

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

  • createSession(boolean, int)返回一個 Session 對象。boolean 參數指出 Session 是否被處理, int 則指出確認模式(請參閱 確認)。

  • start()激活提供者發送消息。

  • stop()臨時停止消息的發送,可以用 start() 重新開始發送。

  • close()關閉到提供者的連接,並釋放以它的名義佔用的所有資源。

 

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

  • createProducer(Destination)返回一個 MessageProducer 對象,向指定的 Destination 發送消息。

  • createConsumer(Destination)返回一個 MessageConsumer 對象來接收來自指定 Destination 的消息。

  • commit()提交當前事務的所有使用的或者產生的消息。

  • rollback()回滾當前事務所有使用的或者產生的消息。

  • create<messagetype></messagetype>Message(...)一組返回 <messagetype></messagetype>Message 的方法——例如,MapMessageTextMessage 等。

Destination

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

MessageProducer

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

  • send(Message)發送指示的 Message

  • setDeliveryMode(int)設置後續消息的發送模式,有效值爲 DeliveryMode.PERSISTENTDeliveryMode.NON_PERSISTENT

  • setPriority(int)設置後續發送消息的優先級,有效值爲 0 到 9。

  • setTimeToLive(long)設置後續發送消息失效前的持續時間,以毫秒計。

MessageConsumer

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

  • receive():返回下一發到達的消息,該方法在消息可用之前會受到阻塞。

  • receive(long):接收在 long 毫秒內到達的下一個消息,如果在時間限制內沒有消息到達,則該方法返回 null

  • receiveNoWait:如果有一個消息立即可用,則接收下一個消息,如果沒有消息可用,則該方法返回 null

  • setMessageListener(MessageListener)設置 MessageListenerMessageListener 對象在消息到達時接收它們,也就是異步接收(請參閱 MessageListener )。

MessageListener

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

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

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