中文日韩电影网站_欧美三级网页_欧美大片免费观看_亚洲欧美日韩国产一区

您的位置:首頁 >聚焦 >

RabbitMq TTL+死信隊列 延遲消息問題記錄|觀點

2023-02-27 01:01:06    來源:騰訊云

延遲隊列存儲的對象是對應的延遲消息,所謂的延遲消息是指當消息被發送以后,并不想讓消費者立刻拿到消息,而是等待特定時間后,消費者才能拿到這個消息進行消費


(相關資料圖)

利用RabbitMqTTL和死信隊列 來實現延時消費。

如果設置的是隊列統一過期時間放到死信隊列,沒有什么問題。

如果是延時時間設置到每條消息上的。而不是給隊列的。

實現方式為消息存活時間為動態用戶頁面可配置的。

這就導致了一個問題:

先用一條消息的存活時間是1天。后面又進了一條消息存活時間是1小時。

結果一小時到了,發現這條消息并沒有被轉發到消費延時過期消息的隊列。

原因是盡管ttl是設給每條消息的。但是本質上,所有延時消息都還在一個隊列里,對它過期時間的檢測也是從頭部開始的。

它不會檢測每一條消息是否過期。而是順序檢測。

如果first in的消息過期時間很長,會導致它阻塞后進的消息。

不僅無法實現真正的過期時間。還會導致,一個大的過期時間的先進的消息,會堆積一堆后進的過期時間短的消息。

問題解決

這個時候可以使用rabbitMq的一個插件:rabbitmq_delayed_message_exchange

一段時間以來,人們一直在尋找用RabbitMQ實現延遲消息的傳遞方法,到目前為止,公認的解決方案是混合使用TTL和DLX。而rabbitmq_delayed_message_exchange插件就是基于此來實現的,RabbitMQ延遲消息插件新增了一種新的交換器類型,消息通過這種交換器路由就可以實現延遲發送

插件安裝

需要根據自己的rabbitMq選擇對應的版本。我rabbitMq的版本是RabbitMQ 3.11.0,對應的插件版本就是:3.11.1

基于Linux

--1、cd到rabbitmq默認安裝位置cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.7.18/plugins--2、通過ftp工具將插件上傳到此目錄下--3、開啟插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange--4、重啟MQ服務systemctl restart rabbitmq-server

基于Docker

--1、通過ftp工具將插件上傳到Linux服務器的根目錄下--2、拷貝到docker中rabbitmq插件目錄下,rabbitmq_delayed_message_exchange-3.9.0.ez(下載包的全名)docker cp /rabbitmq_delayed_message_exchange-3.9.0.ez 容器ID:/plugins--3、進入容器docker exec -it 容器id /bin/bash--4、查看插件是否存在(確保2中的操作已經將插件拷貝過來了)cd pluginsls |grep delay--5、開啟插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange--6、退出容器exit--7、重啟MQ服務docker restart 容器ID

安裝成功

web界面新建交換機選擇類型出現紅框標注即表示成功

image.png

代碼實現

1:springBoot配置

@Configurationpublic class DelayRabbitmqConfig {     /**     * 聲明延遲隊列     * @return     */    @Bean    public Queue delayQueue(){        return new Queue(QueueConstant.DelayQueue,                true,false,false);    }     /**     * 聲明延遲自定義交換機類型     * @return     */    @Bean    public CustomExchange delayCustomExchange(){        HashMap args = new HashMap<>();//        設置 x-delayed-type 為 direct,當然也可以是 topic 等 發送消息時設置消息頭 headers 的 x-delay 屬性,即延遲時間,如果不設置消息將會立即投遞        args.put("x-delayed-type","direct");        return new CustomExchange(ExchangeConstant.DelayCustomerExchange,                "x-delayed-message",true,false,args);    }     /**     * 綁定延遲交換機和隊列     * @return     */    @Bean    public Binding delayQueueAndCustomExchange(){        return BindingBuilder.bind(delayQueue())                .to(delayCustomExchange()).with(RoutingKeyConstant.DelayCustomerRoutingKey).noargs();    }}

springMvc配置

引入依賴:    xmlns:util="http://www.springframework.org/schema/util"    http://www.springframework.org/schema/util    http://www.springframework.org/schema/util/spring-util-4.0.xsd                                                                                                                

代碼實現

//消息發送final MessagePostProcessor messagePostProcessor = new MyMessagePostProcessor(Integer.valueOf(ttl.toString()));DisTimingPushDto disTimingPushDto = new DisTimingPushDto();disTimingPushDto.setOrderId(dispense.getOrderId());disTimingPushDto.setPushTime(disDispense.getPushTime());rabbitTemplate.convertAndSend(MsgQueueEnum.TIMING_PUSH.getExchangeName(), MsgQueueEnum.TIMING_PUSH.getQueueName(), disTimingPushDto, messagePostProcessor);//每條消息時間配置import org.springframework.amqp.AmqpException;import org.springframework.amqp.core.Message;import org.springframework.amqp.core.MessagePostProcessor;/** * 延遲消息處理器 Processor * @author king * @date 2022年12月28日 11:14 */public class MyMessagePostProcessor implements MessagePostProcessor {    /**     * 消息延遲時間,單位:毫秒     */    private final Integer TTL;    public MyMessagePostProcessor(final Integer ttl) {        this.TTL = ttl;    }    @Override    public Message postProcessMessage(Message message) throws AmqpException {        message.getMessageProperties().setDelay(TTL);        return message;    }}

標簽: RabbitMQ

相關閱讀

中文日韩电影网站_欧美三级网页_欧美大片免费观看_亚洲欧美日韩国产一区
国产精品国产三级国产三级人妇 | 亚洲午夜久久久久久久久电影院| 国产精品美女久久久久av爽李琼| 欧美国产1区2区| 亚洲欧美乱综合| 婷婷丁香久久五月婷婷| 青椒成人免费视频| 国产乱码精品一区二区三区忘忧草| 国产乱人伦偷精品视频不卡| gogogo免费视频观看亚洲一| 欧美欧美欧美欧美| 国产亚洲成av人在线观看导航| 亚洲男帅同性gay1069| 日本三级亚洲精品| 高清不卡一二三区| 欧美丰满一区二区免费视频| 中文一区二区在线观看| 亚洲大片一区二区三区| 东方欧美亚洲色图在线| 欧美日韩视频不卡| 中文字幕电影一区| 日韩av电影一区| av在线综合网| 欧美本精品男人aⅴ天堂| 自拍偷在线精品自拍偷无码专区| 日本成人在线看| 91一区二区三区在线观看| 日韩一区二区精品| 一区二区三区欧美亚洲| 国产精品一品视频| 日韩欧美高清在线| 天天综合日日夜夜精品| 色偷偷88欧美精品久久久| 国产亚洲1区2区3区| 美女网站视频久久| 欧美日韩黄色影视| 亚洲影院在线观看| 一本一道久久a久久精品| 国产色产综合色产在线视频| 久久99这里只有精品| 欧美猛男男办公室激情| 一区二区三区日韩| 一本大道久久精品懂色aⅴ| 亚洲国产岛国毛片在线| 国内成人精品2018免费看| 欧美片在线播放| 性做久久久久久免费观看欧美| 一本大道久久a久久精二百| 亚洲少妇最新在线视频| 91小视频在线| 亚洲日本护士毛茸茸| 9人人澡人人爽人人精品| 国产精品乱子久久久久| 成人av资源网站| 国产精品欧美一级免费| 福利一区二区在线| 国产精品网站导航| aaa欧美色吧激情视频| 亚洲欧洲国产日韩| 95精品视频在线| 亚洲精品国产精华液| 欧美在线啊v一区| 亚洲一区二区三区免费视频| 欧美亚男人的天堂| 日韩电影在线观看一区| 欧美一级二级三级蜜桃| 国产美女精品在线| 国产精品久久久久久亚洲毛片| 懂色av一区二区在线播放| 国产精品国产三级国产普通话蜜臀 | 日韩精品一区二区在线| 精品一区二区三区在线播放| 久久丝袜美腿综合| 不卡大黄网站免费看| 综合亚洲深深色噜噜狠狠网站| 成人av网站免费观看| 亚洲精品欧美专区| 欧美日韩aaa| 国产曰批免费观看久久久| 国产精品视频一二三| 在线视频综合导航| 久久精品国产99国产精品| 日本一区二区三区久久久久久久久不| 成人av在线看| 午夜一区二区三区视频| 日韩午夜激情电影| 粉嫩在线一区二区三区视频| 亚洲免费观看高清| 91精品国产综合久久精品麻豆| 精品无码三级在线观看视频| 国产精品九色蝌蚪自拍| 欧美日本一道本在线视频| 精品影视av免费| 亚洲精品水蜜桃| 精品国产1区二区| 一本久久a久久免费精品不卡| 青娱乐精品视频| 亚洲欧洲精品一区二区精品久久久| 精品视频免费看| 国产剧情av麻豆香蕉精品| 亚洲精品中文字幕在线观看| 欧美mv和日韩mv国产网站| 色综合一区二区三区| 麻豆国产一区二区| 一区二区三区免费看视频| 精品免费国产二区三区| 91浏览器打开| 国产精品中文欧美| 亚洲成av人片一区二区三区| 亚洲国产精品t66y| 欧美成人vr18sexvr| 色欧美日韩亚洲| 国产成人av福利| 天堂在线一区二区| 国产精品久久久久久户外露出| 91精品国产麻豆| 欧洲色大大久久| 不卡一卡二卡三乱码免费网站| 青青草国产成人99久久| 亚洲综合色成人| 国产精品久久久久天堂| 久久伊99综合婷婷久久伊| 欧美精品丝袜中出| 91福利资源站| 91丝袜美腿高跟国产极品老师| 激情五月播播久久久精品| 无码av免费一区二区三区试看 | 免费观看成人av| 午夜久久久久久久久| 亚洲日本一区二区| 综合在线观看色| 国产精品久久久久久久久免费樱桃| 精品少妇一区二区| 制服丝袜中文字幕亚洲| 欧美日本在线看| 欧美日韩成人激情| 欧美性一区二区| 欧美午夜一区二区| 欧美日韩一区二区在线视频| 日本韩国欧美在线| 91女神在线视频| 色婷婷国产精品久久包臀| 91在线观看污| 91美女片黄在线| 日本高清不卡aⅴ免费网站| 99re亚洲国产精品| 91视频免费看| 91黄色激情网站| 欧美日韩高清在线播放| 欧美精品国产精品| 欧美一区二区三区在线看| 欧美一级理论片| 久久亚洲一级片| 国产精品无圣光一区二区| 中文字幕欧美三区| 亚洲人精品午夜| 亚洲成人777| 久久精品国产精品亚洲综合| 国产一区二区在线影院| 国产成人精品免费一区二区| av一区二区三区四区| 色8久久人人97超碰香蕉987| 欧美日韩第一区日日骚| 日韩区在线观看| 亚洲国产精品传媒在线观看| 亚洲精选一二三| 青青草伊人久久| 成人午夜av影视| 欧美日韩精品一区二区三区四区 | 亚洲女人的天堂| 亚洲成人在线免费| 美国毛片一区二区三区| 懂色av中文字幕一区二区三区| 91一区二区三区在线观看| 欧美日韩国产一二三| 精品成人一区二区三区| 国产精品久久久久永久免费观看| 亚洲激情综合网| 久久精品999| 色视频一区二区| 精品国产1区2区3区| 亚洲欧洲成人自拍| 日韩av中文在线观看| 国产成人精品亚洲日本在线桃色| 色综合久久久久综合体桃花网| 欧美一区二区在线不卡| 国产欧美精品一区二区色综合| 亚洲资源在线观看| 国产精品中文有码| 欧美伦理影视网| 国产精品国产a| 久久精品久久综合| 在线看日韩精品电影| 久久精品免视看| 五月婷婷久久丁香| 99精品欧美一区二区蜜桃免费| 日韩视频国产视频| 亚洲欧美激情在线| 国产精品亚洲第一| 日韩一区二区麻豆国产|