日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

RabbitMQ高級之失敗重試機制(含源碼)

來源: 責編: 時間:2023-11-28 09:36:26 224觀看
導讀一、失敗重試機制 當消費者出現異常后,消息會不斷requeue(重新入隊)到隊列,再重新發送給消費者,然后再次異常,再次requeue,無限循環,導致mq的消息處理飆升,帶來不必要的壓力。 為此,可利用Spring的retry機制,在消費者出現

一、失敗重試機制

    當消費者出現異常后,消息會不斷requeue(重新入隊)到隊列,再重新發送給消費者,然后再次異常,再次requeue,無限循環,導致mq的消息處理飆升,帶來不必要的壓力。qwZ28資訊網——每日最新資訊28at.com

    為此,可利用Spring的retry機制,在消費者出現異常時利用本地重試,而不是無限制的requeue到mq隊列。qwZ28資訊網——每日最新資訊28at.com

配置參數如下:qwZ28資訊網——每日最新資訊28at.com

listener: # 開啟消費者確認其機制      simple:        prefetch: 1  #消費者每次只能獲取一條消息,處理完才能獲取下一條(可實現能者多勞)        acknowledge-mode: AUTO  # none:關閉ack;manual:手動ack;auto:自動ack        retry:          enabled: true  #開啟消費者失敗重試          initial-interval: 1000ms  #初始的失敗等待時長為1秒          multiplier: 1 #下次失敗的等待時長倍數,下次等待時長 = multiplier * last-interval          max-attempts: 3 #最大重試次數          stateless: true #true無狀態;false有狀態。如果業務中包含事務,這里改為false

測試結果:qwZ28資訊網——每日最新資訊28at.com

圖片圖片qwZ28資訊網——每日最新資訊28at.com

但是重試三次后,隊列里面的消息被踢出了:qwZ28資訊網——每日最新資訊28at.com

圖片圖片qwZ28資訊網——每日最新資訊28at.com

二、失敗消息處理策略

    在開啟重試模式后,重試次數耗盡,如果消息依然失敗,則需要有MessageRecoverer接口來處理,它包含三種不同的實現:qwZ28資訊網——每日最新資訊28at.com

     1、RejectAndDontRequeueRecoverer:重試耗盡后,直接reject,丟棄消息。默認就是這種方式。qwZ28資訊網——每日最新資訊28at.com

    2、ImmediateRequeueMessageRecoverer:重試耗盡后,返回nack,消息重新入隊(不建議采用:會出現死循環)。qwZ28資訊網——每日最新資訊28at.com

     3、RepublishMessageRecoverer:重試耗盡后,將失敗消息投遞到指定的交換機。(推薦使用)qwZ28資訊網——每日最新資訊28at.com

圖片圖片qwZ28資訊網——每日最新資訊28at.com

三、實現方式

3.1、定義接收失敗消息的交換機、隊列及其綁定關系:qwZ28資訊網——每日最新資訊28at.com

/**     * 功能描述:定義接收錯誤消費的日志     * @MethodName: receiveErrorMessage     * @MethodParam: [message]     * @Return: void     * @Author: yyalin     * @CreateDate: 2023/11/15 9:55     */    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "errorQueue"),            exchange = @Exchange(name = "errorExchange", type = ExchangeTypes.DIRECT, ignoreDeclarationExceptions = "true"),            key = "errorRouting"    ))    public void receiveErrorMessage(String message) {        log.info("消費者收到發送錯誤的消息: " + message);    }

3.2、定義RepublishMessageRecoverer:

/** * @Description: TODO:定義錯誤消息接收 * @Author: yyalin * @CreateDate: 2023/11/15 9:58 * @Version: V1.0 */@Configuration@Slf4jpublic class ErrorConfig {    @Bean    public MessageRecoverer messageRecoverer(RabbitTemplate rabbitTemplate){        log.debug("加載RepublishMessageRecoverer");        return new RepublishMessageRecoverer(rabbitTemplate,"errorExchange","errorRouting");    }}

qwZ28資訊網——每日最新資訊28at.com

3.3、測試結果:

圖片圖片qwZ28資訊網——每日最新資訊28at.com

3.4、總結

消費者如何保證消息一定被消費?qwZ28資訊網——每日最新資訊28at.com

  •     開啟消費者確認機制為auto,由spring確認消息處理成功后返回ack,異常時返回nack。如果一直處理異常會一直重試。
  •     開啟消費者失敗重試機制,并設置MessageRecoverer,多次重試失敗后將消息投遞到異常交換機,交由人工處理。

本文鏈接:http://www.www897cc.com/showinfo-26-34653-0.htmlRabbitMQ高級之失敗重試機制(含源碼)

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 雙向綁定與單向數據流之爭,Solid會取代React嗎

下一篇: 新一代WebFlux框架核心技術Reactor響應式編程基本用法

標簽:
  • 熱門焦點
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經過去,最明顯的肯定就是大內存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產品也出現了歷史低價,那么各個價位段的產品性價比
  • 三言兩語說透設計模式的藝術-簡單工廠模式

    一、寫在前面工廠模式是最常見的一種創建型設計模式,通常說的工廠模式指的是工廠方法模式,是使用頻率最高的工廠模式。簡單工廠模式又稱為靜態工廠方法模式,不屬于GoF 23種設計
  • 28個SpringBoot項目中常用注解,日常開發、求職面試不再懵圈

    前言在使用SpringBoot開發中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內,目前主要售賣美食相關的
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 與兆芯合作 聯想推出全新旗艦版筆記本電腦開天N7系列

    聯想與兆芯合作推出全新聯想旗艦版筆記本電腦開天 N7系列。這個系列采用兆芯KX-6640MA處理器平臺,KX-6640MA 處理器是采用了陸家嘴架構,16nm 工藝,4 核 4 線
Top 主站蜘蛛池模板: 丰原市| 临清市| 夏津县| 台州市| 晋宁县| 英吉沙县| 岳普湖县| 嘉义县| 临海市| 拉孜县| 长沙县| 集安市| 绥芬河市| 沙田区| 武汉市| 德清县| 房山区| 顺平县| 榆中县| 临邑县| 鱼台县| 宁国市| 武穴市| 壶关县| 长丰县| 保亭| 灵丘县| 梁平县| 墨竹工卡县| 丰顺县| 周至县| 嘉祥县| 平顺县| 西吉县| 桓仁| 华亭县| 高邑县| 靖边县| 井冈山市| 北碚区| 仪征市|