日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JMS学习(三)JMS 消息结构之属性及消息体详解

發布時間:2023/12/19 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 JMS学习(三)JMS 消息结构之属性及消息体详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

通過上一篇的學習我們知道了消息分為三個部分,即消息頭,屬性及消息體,并對消息頭的十個屬性進行了詳細的介紹,本文再對消息屬性及消息體進行詳細的介紹。

二、屬性介紹

消息屬性的主要作用是可以對頭信息進行一個額外的補充,畢竟消息頭信息一是有限,二是很多不能由應用程序設定。通常,消息屬性可以用在消息選擇器的表達式里,結合起來實現對消息的過濾。

消息屬性的值只能是基本的類型,或者這些基本類型對應的包裝類型。也就是說,不能將一個自定義的對象作為屬性值。通常情況下,如果能夠放在body里的內容,就不必放在消息屬性里。

消息屬性按類型可以分為標準屬性(JMSX作為前綴),消息組件自定義的屬性(JMS_作為前綴),以及應用自定義的屬性。自定義的屬性不要以前面兩種為前綴。

  標準的JMSX屬性如下表:

  

  其中,JMSXGroupID和JMSGroupSeq是客戶端可以設置的。消息的屬性一旦設置,且消息發送后,就會變成只讀的,將不能再被修改。

  跟頭信息的設置不同的是,對于這些標準屬性,JMS并不要求消息中間件必須設置這些屬性,所以這些屬性的值可能是存在的,也可能為空,而且經測試大部分的標準屬性都可以由應用程序自行設置,就像自定義的屬性一樣。

三、消息體

  為了適應不同場景下的消息,提高消息存儲的靈活性,JMS定義了幾種具體類型的消息,不同的子類型的消息體也不一樣,需要注意的是,Message接口并沒有提供一個統一的getBody之類的方法。消息子接口定義如下:

  1)TextMessage: 最簡單的消息接口,用于發送文本類的消息,設置/獲取其body的方法定義如下setText()/getText().

  2)StreamMessage: 流式消息接口,里面定義了一系列的對基本類型的set/get方法,消息發送者可以通過這些方法寫入基本類型的數據,消息接收者需要按發送者的寫入順序來讀取相應的數據。

  3)MapMessage:把消息內容存儲在Map里,本接口定義了一系列對基本類型的的set/get方法,與StreamMessage不同的是,每個值都對應了一個相應的key,所以消息接收者不必按順序去讀取數據。

  4)ObjectMessage: 將對象作為消息的接口,提供了一個set/get 對象的方法,需要注意的是只能設置一個對象,這個對象可以是一個Collection,但必須是序列化的。

  5)BytesMessage:以字節的形式來傳遞消息的接口,除了提供了對基本類型的set/get,還提供了按字節方式進行set/get。

三、小結

  消息屬性是對消息頭信息的一種補充,相對來說更加靈活,通常情況下,我們不應該依賴標準的屬性值,如果應用需要,我們也應該自定義所需要的屬性值。

JMS提供的5種子消息接口讓我們在發送消息時有了更多的選擇,可以根據應用的實際需要來選擇對應的子接口。

總結

以上是生活随笔為你收集整理的JMS学习(三)JMS 消息结构之属性及消息体详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。