在代理程式內,有幾種操作會導致訊息被複製。這些操作包括:
-
將訊息從一個位址轉送到另一個位址。
-
將過期的訊息從佇列移至設定的
expiry-address
。 -
將超過其
max-delivery-attempts
的訊息從佇列移至設定的dead-letter-address
。 -
使用管理 API 以管理方式將訊息從一個佇列移至另一個佇列。
當發生這些情況時,原始訊息的內容和屬性會被複製到一個新的訊息中。然而,複製過程會移除一些可能重要的資料片段,因此這些資料會保留在以下特殊的訊息屬性中:
- _AMQ_ORIG_ADDRESS
-
一個字串屬性,包含訊息的原始位址。
- _AMQ_ORIG_QUEUE
-
一個字串屬性,包含訊息的原始佇列。
- _AMQ_ORIG_MESSAGE_ID
-
一個字串屬性,包含訊息的原始訊息 ID。
上述操作有可能會組合在一起。例如,一個訊息可能從一個位址轉送到另一個位址,並進入一個佇列,而消費者嘗試並未能成功消費該訊息,導致該訊息被傳送到死信位址。或者,一個訊息可能以管理方式從一個佇列移至另一個佇列,然後過期。
在這些情況下,ORIG
屬性將包含最後一次(即最近一次)操作的資訊。