- Header (required) - 標頭
- Properties (optional) - 屬性
- Body (optional) - 訊息本體
- Header
項目 | 說明 | |
---|---|---|
1 | JMSDestination | 傳送的目的地有可能是 quque 或 topic,client 程式可以利用這個 header,如下取得 queue 或 topic 值: Topic destination = (Topic) message.getJMSDestination(); |
2 | JMSDeliveryMode | 傳送模式有兩種 - DeliveryMode.PERSISTENT 及 DeliveryMode.NON_PERSISTENT,這個標頭值可以在 producer (生產者) 端以 setJMSDeliverMode(DeliveryMode.PERSISTENT); 的方式設定。當訊息為 PERSISTENT 時,訊息至少會被 server 傳送出一次,萬一傳送過程 server 出問題,當 server 服務恢復後,就會重傳,這表示,消費者端有可能同一個訊息收到兩次; 當訊息為 NON_PERSISTENT,訊息永遠只會被送出一次,所以,萬一因各種原因沒有送到消費者,也不會重送。 |
3 | JMSMessageID | JMSMessageID 的型別是 String,是由 server 端產生的一個 unique 字串,JMS 沒有規範產生的規則,所以不同廠商的 server 產生的 JMSMessageID 的規則會不相同,但都會是唯一。client 要取得這個值的方法如下: String messageId = message.getJMSMessageID(); |
4 | JMSTimestamp | 這是個 long 型別的值,當訊息由生產者送到 server 端時,EMS (或其它品牌的 message server) 會設定給它當時系統時間的值,即 JMSTimestamp 所記錄的是 server 收到 producer 送來訊息的時間。 |
5 | JMSExpiration | 也是一個長整數的值,記錄何時這個訊息就會失效,設定這個標頭值的方法是在生產者端呼叫 setJMSExpiration(...) 或 setTimeToLive(...),如果傳入的值為 0,表示永遠不失效。 |
6 | JMSRedelivered | 值為 true 或 false,用來表示 server 如果沒有收到消費者端的 acknowledge,訊息是否重傳。 |
7 | JMSPriority | 這個值由0~9 表示訊息的重要性,數字越大表示越重要,由生產者設定,一般的訊息應設定在 0~4,重要的訊息則設定其值為 5~9。 |
8 | JMSReplyTo | 這個值由生產者端設定,要求消費者端回覆時,回覆到那一個 queue 或 topic,所以在消費者端一定會使用 getJMSReplyTo() 取得值。 |
9 | JMSCorrelationID | 這個值用來標示訊息間的關係,一種普遍的作法是,消費者端回覆訊息給生產者時,將生產者傳來的訊息的 message id 設定到 JMSCorrelationID 再回覆給生產者,這樣生產者就知道這次回覆的訊息是那一個訊息的回覆訊息。 |
10 | JMSType | 用來標示訊息本體是那一種型別,可能的值有 MapMessage、TextMessage、ByteMessage 等。 |
- Properties
TestMessage msg = session.createTextMessage();
msg.setText("just for test");
msg.setStringProperty("username", "steven");
publisher.publish(msg);屬性的型別可以是 boolean、byte、short、int、long、float、double、String 中任一種。JMS 定義了以下的幾個屬性,但除了 JMSXGroupID 及 JMSXGroupSeq 強制廠商一定要支援外,其餘不一定要支援,所以可能你選用的產品有部份的屬性是沒有的。
- JMSXUserID
- JMSXAppID
- JMSProducerTXID
- JMSConsumerTXID
- JMSRcvTimestamp
- JMSXDeliveryCount
- JMSXState
- JMSGroupID
- JMSXGroupSeq
- JMS_TIBCO_CM_PUBLISHER
- JMS_TIBCO_CM_SEQUENCE
- JMS_TIBCO_COMPRESS
- JMS_TIBCO_DISABLE_SENDER
- JMS_TIBCO_IMPORTED
- JMS_TIBCO_MSG_EXT
- JMS_TIBCO_MSG_TRACE
- JMS_TIBCO_PRESERVE_UNDELIVERED
- JMS_TIBCO_SENDER
- JMS_TIBCO_SS_SENDER
- Types
- TextMessage
- StreamMessage
- MapMessage
- ObjectMessage
- BytesMessage
這是 JMS 定義的五個介面,這五個介面都繼承 Message 這個介面,這是 body 的五個種類。
沒有留言:
張貼留言