activeMq-JMS消息結構-3

JMS 消息由如下幾部分組成:消息頭,屬性和消息體

消息頭包含消息的識別信息和路由信息,消息頭包含一些標準的屬性以下:

  1:JMSDestination:由send方法設置服務器

    消息發送的目的地:主要是指Queue和Topic,自動分配ide

  2:JMSDeliveryMode:由send方法設置事務

    傳送模式。有兩種 :持久模式和非持久模式。一條持久性的
    消息應該被傳送「一次僅僅一次」,這就意味者若是JMS提供者出現故障,該消
    息並不會丟失,它會在服務器恢復以後再次傳遞。一條非持久的消息最多會傳送
    一次,這意味這服務器出現故障,該消息將永遠丟失。自動分配路由

  3:JMSExpiration:由send方法設置開發

    消息過時時間,等於 Destination 的send 方法中的
    timeToLive值加上發送時刻的GMT 時間值。若是timeToLive 值等於零,則
    JMSExpiration 被設爲零,表示該消息永不過時。若是發送後,在消息過時時間
    以後消息尚未被髮送到目的地,則該消息被清除。自動分配get

  4:JMSPriority:由send方法設置it

    消息優先級,從 0-9 十個級別,0-4 是普通消息,5-9 是加急消
    息。JMS 不要求JMS Provider 嚴格按照這十個優先級發送消息,但必須保證加
    急消息要先於普通消息到達。默認是4級。自動分配io

  5:JMSMessageID:由send方法設置程序

    惟一識別每一個消息的標識,由JMS Provider 產生。自動分配方法

  6:JMSTimestamp:由客戶端設置

    一個JMS Provider在調用send()方法時自動設置的。它是消息被
    發送和消費者實際接收的時間差。自動分配

  7:JMSCorrelationID :由客戶端設置

    用來鏈接到另一個消息,典型的應用是在回覆消息中鏈接
    到原消息。在大多數狀況下,JMSCorrelationID用於將一條消息標記爲對
    JMSMessageID標示的上一條消息的應答,不過,JMSCorrelationID能夠是任何
    值,不單單是JMSMessageID。由開發者設置

  8:JMSReplyTo :由客戶端設置

    提供本消息回覆消息的目的地址。由開發者設置

  9:JMSType :由客戶端設置

    消息類型的識別符。由開發者設置

  10:JMSRedelivered:由JMS Provider設置

    若是一個客戶端收到一個設置了JMSRedelivered屬性的消
    息,則表示可能客戶端曾經在早些時候收到過該消息,但並無簽收
    (acknowledged)。若是該消息被從新傳送,JMSRedelivered=true反之,
    JMSRedelivered =false。自動設置

 

消息體:

  JMS API定義了5種消息體格式,也叫消息類型,可使用不一樣形式發送
  接收數據,並能夠兼容現有的消息格式。包括:

  TextMessage

  MapMessage

  BytesMessage

  StreamMessage

  ObjectMessage

 

消息屬性,包含如下三種類型的屬性:

1:應用程序設置和添加的屬性,好比:

  Message.setStringProperty(「username」,username);

2:JMS定義的屬性

  使用「JMSX」做爲屬性名的前綴,

  connection.getMetaData().getJMSXPropertyNames(), 方法返回全部鏈接支持的JMSX 屬性的名字。

3:JMS供應商特定的屬性

  JMSXUserID:發送消息的用戶標識,發送時提供商設置

  JMSXAppID:發送消息的應用標識,發送時提供商設置

  JMSXDeliveryCount:轉發消息重試次數,第一次是1,第二次是2,… ,發送時提供商設置

  JMSXGroupID:消息所在消息組的標識,由客戶端設置

  JMSXGroupSeq:組內消息的序號第一個消息是1,第二個是2,…,由客戶端設置

  JMSXProducerTXID :產生消息的事務的事務標識,發送時提供商設置

  JMSXConsumerTXID :消費消息的事務的事務標識,接收時提供商設置

  JMSXRcvTimestamp :JMS 轉發消息到消費者的時間,接收時提供商設置

  JMSXState:假定存在一個消息倉庫,它存儲了每一個消息的單獨拷貝,且這些消        息從原始消息被髮送時開始。每一個拷貝的狀態有:1(等待),2(準備),3        (到期)或4(保留)。因爲狀態與生產者和消費者無關,因此它不是由它們來        提供。它只和在倉庫中查找消息相關,所以JMS沒有提供這種API。由提供商設置

相關文章
相關標籤/搜索