JMS消息只有在被確認以後,才認爲已經被成功地消費了。消息的成功消費一般包含三個階段:異步
在事務性會話中,當一個事務被提交的時候,確認自動發生。
在非事務性會話中,消息什麼時候被確認取決於建立會話時的應答模式(Acknowledge mode),該參數有如下三個可選值ide
JMS支持一下兩種消息的提交模式:工具
可使用消息優先級來指示JMS provider首先提交緊急的消息。優先級分10個級別,從0(最低)到9(最高)。若是不指定優先級,默認級別是4。須要注意的是,JMS provider並不必定保證按照優先級的順序提交消息。code
能夠設置消息在必定時間後過時,默認是永不過時能夠設置消息在必定時間後過時,默認是永不過時。隊列
能夠經過會話上的createTemporaryQueue 方法和createTemporaryTopic方法來建立臨時目的地。它們的存在時間只限於建立它們的鏈接所保持的時間。
只有建立該臨時目的地的鏈接上的消息消費者纔可以從臨時目的地中提取消息。
能夠在producer一方,經過message.setJMSReplyTo(replyTo);
方法將其傳遞給consumer,用來進行消息響應。事務
首先消息生產者必須使用PERSISTENT提交消息。消費者能夠經過會話上的createDurableSubscriber
方法來建立一個持久訂閱,該方法的第一個參數必須是一個topic
。第二個參數是訂閱名稱Subscription Name
。
JMS provider會存儲發佈到持久訂閱對應的topic
上的消息。若是最初建立持久訂閱的客戶或者任何其它客戶,使用相同的鏈接工廠
和鏈接的客戶ID
,相同的topic
和相同的訂閱名稱Subscription Name
,再次調用會話上的createDurableSubscriber
方法,那麼該持久訂閱就會被激活。JMS provider會向客戶發送客戶處於非激活狀態時所發佈的消息。
持久訂閱在某個時刻只能有一個激活的訂閱者。持久訂閱在建立以後會一直保留,直到應用程序調用會話上的unsubscribe
方法。ip
JMS PTP(Point-to-Point)模型定義了客戶端如何向隊列發送消息,從隊列接收消息,以及瀏覽隊列中的消息。
PTP模型是基於隊列的,生產者發消息到隊列,消費者從隊列接收消息,隊列的存在使得消息的異步傳輸成爲可能。和郵件系統中的郵箱同樣,隊列能夠包含各類消息,JMS Provider 提供工具管理隊列的建立、刪除。io
JMS Pub/Sub 模型定義瞭如何向一個內容節點發布和訂閱消息,這些節點被稱做topic
,topic
能夠被認爲是消息的傳輸中介,發佈者(publisher)
發佈消息到topic
,訂閱者(subscribe)
從topic
訂閱消息。topic
使得消息訂閱者
和消息發佈者
保持互相獨立,不須要接觸便可保證消息的傳送。List