有沒有辦法計算作業重新排隊的次數(通過拒絕或 Nak)而無需手動重新排隊作業?我需要重試工作“n”次,然后在“n”次后放棄。ps:目前我手動重新排隊作業(如果計數器不存在或值小于“n”,則刪除舊作業,創建具有確切內容和額外計數器標頭的新作業)
2 回答

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
有redelivered
消息屬性,該屬性設置為true時消息重新發送一個或更多的時間。
如果您想跟蹤重新傳遞計數或左重新傳遞數(又名跳數限制或 IP 堆棧中的 ttl),您必須將該值存儲在消息正文或標題中(字面意思是 - 消費消息,修改它,然后將修改后的消息發布回代理)。

隔江千里
TA貢獻1906條經驗 獲得超10個贊
在消息實際上是死信的情況下,您可以檢查x-death
消息頭的內容。
例如,當您reject
/ nack
withrequeue = false
并且隊列具有關聯的死信交換時就是這種情況。
在這種情況下,此標頭的內容是一個數組。每個元素描述一次失敗的交付嘗試,包含嘗試交付的時間、路由信息等信息。
這適用于 RabbitMQ - 我不知道它是否適用于一般的 AMQP。
編輯
自從我最初寫這個答案以來,x-death
標題結構已更改。
標頭更改格式通常是一件非常糟糕的事情,但在這種特殊情況下,原因是如果消息連續死信,消息大小將無限增長。
因此,我刪除了用于獲取消息死亡人數的代碼段。
仍然可以從新的標題格式中獲得死亡人數。
- 2 回答
- 0 關注
- 346 瀏覽
添加回答
舉報
0/150
提交
取消