ActiveMQ詳解(2) JMS基本概念

2021-09-14 05:01:16 字數 1305 閱讀 8463

connection:封裝了jms客戶端程式和provider之間的乙個連線。

session:會話物件,生產和消費資訊的單執行緒上下文,用於建立生產者、消費者和訊息物件等。session物件提供了乙個事務性的上下文,在這個上下文中,一組傳送和接收操作被組合到了乙個原子操作。

destination:訊息傳送的目的地,有queue和topic兩種實現型別。

acknowledge:訊息的簽收。

transaction:訊息的事務。

訊息頭:包含訊息的識別資訊和路由資訊,主要屬性如下:

destination:訊息傳送的目的地,主要指topic和queue。

deliverymode:傳送模式,有持久化模式和費持久化模式。一條持久化的訊息應該被傳遞「一次且僅僅一次」,這意味著如果jms provider出現了故障,持久化的訊息也不會丟失,會在provider恢復後被重新消費。一條非持久化的訊息最多被消費一次,provider故障時該訊息可能會丟失。

expiration:訊息的過期時間。設定為0表示該訊息永久生效。如果在訊息傳送後,在過期時間到達後還沒有被消費,則該訊息會被清除。

priority:訊息的有限級別,有0~9共10個級別,其中0 ~ 4是普通資訊,5 ~9是加急訊息。jms規範不要求provider嚴格按照10個優先順序的順序傳送訊息,但是必須保證加急訊息先與普通資訊到達。預設的級別是4.

messageid:識別每個訊息的唯一標識,由jms provider產生。

timestamp:jms provider在呼叫send() 方法時自動設定,他說訊息被傳送和實際消費之間的時間差。

type:訊息型別,由開發者設定。

redelivered:重傳標誌。如果該訊息的redelivered屬性為true,表示該訊息已經被某個消費者接收過,但是並沒有簽收(acknowledge)

訊息體:jms api定義了5中訊息體格式,也稱為訊息型別,可以是使用不同的形式來傳送和接收訊息,並可以相容現有的訊息格式。5種訊息型別如下:

textmessage

mapmessage

bytesmessage

streammessage

objectmessage

訊息屬性:jms主要包含以下三種型別屬性:

應用程式設定的屬性,如message.setstringproperty(「key」,「value」);

jms定義的屬性,以「jmsx」作為字首,封裝在訊息的元資料中。可以使用connection.getmetadata().getjmsxpropertynames()方法獲取所有jmsx的屬性名。

jms provider的特定屬性。

activemq 使用學習2

訊息傳送策略 一 持久化訊息 預設持久化訊息 1.預設同步,可以設定非同步 con.setasyncsend true 2.設定回執視窗大小 二 非持久話訊息 預設非同步傳送,需要設定回執視窗大小 broke 到達訊息最大值時,需要回執 若到達最大的處理方式設定?consumer 是 pull 還是...

事件詳解2

預設行為 什麼是預設行為 不需要自己去編寫,瀏覽器本身就具備的功能 如 在空白頁面點選滑鼠右鍵出現選單 l阻止預設行為 普通寫法 return false 例子1.遮蔽右鍵選單 document.oncontextmenu function 同理,阻止表單提交onsubmit 阻止onkeydown...

Class檔案詳解 2

今天繼續分析class檔案的結構。上次讀取了constant pool,緊接著是這個類或介面的access flags,jvm定義的關於class或inte ce的access flags有 private static short acc public 0x0001 private static ...