當前位置: 妍妍網 > 碼農

RocketMQ 消費異常如何重新發送訊息並偵錯

2024-02-24碼農

業務場景

RocketMQ 消費異常,但是重試間隔時間太長(HTTP協定重試策略),需要快速定位到系統異常問題,所以需要手動在控制台發送訊息並且發送。

異常訊息日誌

RocketMQ

雲訊息佇列 RocketMQ 版(原ONS)是阿裏雲基於 Apache RocketMQ 構建的低延遲、高並行、高可用、高可靠的分布式「訊息、事件、流」統一處理平台。RocketMQ 自誕生以來一直服務阿裏集團13年,歷經多次雙十一萬億級數據洪峰穩定性驗證。

異步解耦

訊息重試

雲訊息佇列 RocketMQ 版支持訊息重試功能,即Consumer消費某條訊息失敗或消費超時,雲訊息佇列 RocketMQ 版會根據訊息重試機制重新投遞訊息。

註意事項

  • 一條訊息無論重試多少次,這些重試訊息的 Message ID 都不會改變。

  • 訊息重試只針對集群消費模式生效;廣播消費模式不提供失敗重試特性,即消費失敗後,失敗訊息不再重試,繼續消費新的訊息。

  • 訊息重試策略

    雲訊息佇列 RocketMQ 版訊息收發過程中,若Consumer消費某條訊息失敗或消費超時,則雲訊息佇列 RocketMQ 版會在重試間隔時間後,將訊息重新投遞給Consumer消費,若達到最大重試次數後訊息還沒有成功被消費,則訊息將被投遞至死信佇列。您可以透過消費死信佇列中的死信訊息來恢復業務異常。

    訊息重試主要功能行為包括:

  • 重試間隔:上一次消費失敗或超時後,距下次訊息可被重新消費的間隔時間。

  • 最大重試次數:訊息消費失敗後,可被雲訊息佇列 RocketMQ 版重復投遞的最大次數。

  • 對於TCP協定和HTTP協定,訊息重試的重試間隔和最大重試次數有所不同。由於這裏是使用的HTTP協定,所以直接看HTTP協定重試策略

    HTTP協定重試策略

    重新發送訊息

    Step 1. 尋找需要發送的 Topic

    Step 2. 進入 Topic 後點選快速體驗

    Step 3. 快速體驗的訊息生產和消費

  • 訊息內容 :就是需要發送的原始訊息內容

  • {
    "userCode""20241111111100000001",
    "certificateType""ID_CARD",
    "remark": null,
    "certificateName""阿克蘇",
    "certificateNo""xxxxxxxxxxxxxx",
    "force"false,
    "auditStatus": 1
    }

  • 訊息key :訊息ID

  • 訊息tag :對應的訊息tag

  • 填寫好相關資訊後,點選發送就可以立馬進入消費了,從而快速解決系統異常問題。