JMS入門(五)–訊息頭

來源:互聯網
上載者:User

一個訊息對象分為三部分:訊息頭(Headers),屬性(Properties)和訊息體(Payload)。對於StreamMessage和MapMessage,訊息本身就有特定的結構,而對於TextMessage,ObjectMessage和BytesMessage是無結構的。一個訊息可以包含一些重要的資料或者僅僅是一個事件的通知。
    訊息的Headers部分通常包含一些訊息的描述資訊,它們都是標準的描述資訊。包含下面一些值:
  1)JMSDestination
       訊息的目的地,Topic或者是Queue。
  2)JMSDeliveryMode

        訊息的發送模式:persistent或nonpersistent。前者表示訊息在被消費之前,如果JMS提供者DOWN了,重新啟動後訊息仍然存在。後者在這種情況下表示訊息會被丟失。可以通過下面的方式設定:Producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

       3)JMSTimestamp
       當調用send()方法的時候,JMSTimestamp會被自動化佈建為當前事件。可以通過下面方式得到這個值:
       long timestamp = message.getJMSTimestamp();
  4)JMSExpiration
       表示一個訊息的有效期間。只有在這個有效期間內,訊息消費者才可以消費這個訊息。預設值為0,表示訊息永不到期。可以通過下面的方式設定:
       producer.setTimeToLive(3600000); //有效期間1小時 (1000毫秒 * 60秒 * 60分)
  5)JMSPriority
       訊息的優先順序。0-4為正常的優先順序,5-9為高優先順序。可以通過下面方式設定:
       producer.setPriority(9);
  6)JMSMessageID
       一個字串用來唯一標示一個訊息。
  7)JMSReplyTo
       有時訊息生產者希望消費者回複一個訊息,JMSReplyTo為一個Destination,表示需要回複的目的地。當然消費者可以不理會它。
  8)JMSCorrelationID
       通常用來關聯多個Message。例如需要回複一個訊息,可以把JMSCorrelationID設定為所收到的訊息的JMSMessageID。
  9)JMSType
       表示訊息體的結構,和JMS提供者有關。
  10)JMSRedelivered
       如果這個值為true,表示訊息是被重新發送了。因為有時消費者沒有確認他已經收到訊息或者JMS提供者不確定消費者是否已經收到。
    除了Header,訊息寄件者可以添加一些屬性(Properties)。這些屬性可以是應用自訂的屬性,JMS定義的屬性和JMS提供者定義的屬性。我們通常只適用自訂的屬性。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.