ActiveMQ-03-JSM-message-消息體

在JMS API中定義了五種消息體,通俗來講消息體也就是消息類型,我們可以使用不同的消息類型來發送與接收消息,消息體重包含了消息的核心數據。

我們可以將消息頭和消息屬性理解為信封,消息體理解為信紙。

五種消息體:

TextMessage:普通文本消息,數據為字符串。

<code>TextMessage msg = session.createTextMessage();
msg.setText("hello");/<code>

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

<code>MapMessage msg = session.createMapMessage();
msg.setString(“name”,”xiaoming”);
msg.setInt(“age”,12);/<code>

BytesMessage:通過字節流來存放消息內容。

<code>byte[] data;
BytesMessage msg = session.createBytesMessage();
msg.wirte(data);/<code>

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

<code>StringMessage msg = session.createStreamMessage();
msg.writeString(“xiaoming”);
msg.writeInt(12);/<code> 

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

<code>ObjectMessage msg = session.createObjectMessage()
setObject(Serializable s)/<code>

在以上五中消息體中,我們最常用的還是第一種,通過文本消息體來存放對象的json字符串,這種寫法幾乎滿足了我們九成以上的需求,筆者工作五六年還沒用過其他消息體,沒有業務場景。


分享到:


相關文章: