JMS Header

  •     一個消息對象分爲三部分:消息頭(Headers),屬性(Properties)和消息體(Payload)。對於StreamMessage和 MapMessage,消息本身就有特定的結構,而對於TextMessage,ObjectMessage和BytesMessage是無結構的。一個消息可以包含一些重要的數據或者僅僅是一個事件的通知。

        消息的Headers部分通常包含一些消息的描述信息,它們都是標準的描述信息。包含下面一些值:

      
JMSDestination
       消息的目的地,Topic或者是Queue。

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

        JMSTimestamp
       當調用send()方法的時候,JMSTimestamp會被自動設置爲當前事件。可以通過下面方式得到這個值:
       long timestamp = message.getJMSTimestamp();

  JMSExpiration
       表示一個消息的有效期。只有在這個有效期內,消息消費者纔可以消費這個消息。默認值爲0,表示消息永不過期。可以通過下面的方式設置:
       producer.setTimeToLive(3600000); //有效期1小時 (1000毫秒 * 60秒 * 60分)

  JMSPriority
       消息的優先級。0-4爲正常的優先級,5-9爲高優先級。可以通過下面方式設置:
       producer.setPriority(9);

  JMSMessageID
       一個字符串用來唯一標示一個消息。由JMS provider產生。

  JMSReplyTo
       有時消息生產者希望消費者回復一個消息,JMSReplyTo爲一個Destination,表示需要回復的目的地。當然消費者可以不理會它。

  JMSCorrelationID
       通常用來關聯多個Message。例如需要回復一個消息,可以把JMSCorrelationID設置爲所收到的消息的JMSMessageID。

  JMSType
       表示消息體的結構,和JMS提供者有關。

  JMSRedelivered
       如果這個值爲true,表示消息是被重新發送了。因爲有時消費者沒有確認他已經收到消息或者JMS提供者不確定消費者是否已經收到。

    除了Header,消息發送者可以添加一些屬性(Properties)。這些屬性可以是應用自定義的屬性,JMS定義的屬性和JMS提供者定義的屬性。我們通常只適用自定義的屬性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章