当前报道:RabbitMq TTL+死信队列 延迟消息问题记录

2023-02-22 19:02:25 来源: 腾讯云

延迟队列存储的对象是对应的延迟消息,所谓的延迟消息是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费


(资料图片)

利用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

当前报道:RabbitMq TTL+死信队列 延迟消息问题记录

原因是尽管ttl是设给每条消息的。但是本质上,所有延时消息都还在一个队列里,对它过期时间的检测也是从...

02-22 19:02:25

海尔兄弟是哪里的动画片_海尔兄弟是哪国的动画片

1、出产国家:中国年代:2001年6月封镜公司:海尔集团中国制作的最长动画片---二百一十二集的《海尔兄弟

02-22 17:00:07

新手怎么下象棋_新手学下象棋的技巧-天天新动态

欢迎观看本篇文章,小升来为大家解答以上问题。新手怎么下象棋,新手学下象棋的技巧很多人还不知道,现...

02-22 15:02:02

热门看点:被执行人需要多久撤销

一、被执行人需要多久撤销被执行人一般需要3-5个工作日撤销。根据法律规定,具有下列情形之一的,人民法...

02-22 13:15:21

当前关注:钒产品淡季不淡 龙头企业忙扩产

钒产品淡季不淡龙头企业忙扩产,储能,钢材,钒钛,钒产品,钢铁行业

02-22 09:17:20

天天快看:御湖天下

1、御湖天下位于花都区狮岭镇狮岭大道东63号(广清高速海布出口洪秀全水库南侧)。2、是溢盈湖畔别墅的...

02-22 06:52:58

“宅里种4树,子孙能致富”,养1棵代表吉祥,养2棵金碧辉煌,美-环球即时看

一年四季当中,我们可以看到许多花卉在生长,那你觉得有哪些花卉在春季是比较好看的呢?一般有迎春花、...

02-22 02:08:20

焦点热文:暮江吟古诗原文_暮江吟古诗的意思

1、《暮江吟》这首诗歌的意思是:一道夕阳的残影铺陈在水面之上,在残阳余晖的照耀之下,一半的江水仍旧...

02-21 21:52:05

独家|无锡众能:胥明军并未担任过公司高管-环球快看点

独家|无锡众能:胥明军并未担任过公司高管:电,财联社记者今日通过企查查电话就胥明军履历问询无锡众能...

02-21 19:29:11

猪年大吉简笔画图片_猪年大吉简笔画

你们好,最近小活发现有诸多的小伙伴们对于猪年大吉简笔画图片,猪年大吉简笔画这个问题都颇为感兴趣的...

02-21 17:41:39

“慈善博主”造假摆拍,伪善是门残酷的流量生意_环球讯息

“慈善博主”造假摆拍,伪善是门残酷的流量生意

02-21 14:00:50

威少助快船冲冠?仅4成左右腾讯网友看好 超半数持怀疑态度

威少助快船冲冠?仅4成左右腾讯网友看好超半数持怀疑态度

02-21 12:02:35

尽职尽责 深入调研 世界观点

细雨中,全国政协委员、新余学院院长张玉清的车行驶在乡间公路上,

02-21 10:09:50

俄罗斯政府:中印等19国公民可根据酒店订单获最长6个月旅游签证 环球观察

俄罗斯政府:中印等19国公民可根据酒店订单获最长6个月旅游签证:据俄罗斯卫星通讯社,俄罗斯联邦政府已...

02-21 08:31:22

【独家焦点】广州黑茶饮文化发展有限公司

1、广州黑茶饮文化发展有限公司。2、以教育培训、文化艺术、产品贸易、零售等为经营的一家企业。

02-21 04:57:07

百世快递|全球聚焦

1、“百世快递”是一家在国内率先运用信息化手段探索快递行业转型升级之路的大型民营快递公司。2、2010...

02-21 00:57:09

微资讯!2022年京津冀经济总量突破10万亿元 新兴经济快速发展

北京市统计局20日公布的数据显示,2022年,京津冀地区生产总值合计10 0万亿元,其中北京、河北跨越4万...

02-20 20:54:44

振兴新突破争当“技术先锋”!沈北新区举办第一届食品化验员技能大赛

振兴新突破争当“技术先锋”!沈北新区举办第一届食品化验员技能大赛

02-20 18:13:55

源达:指数携手上攻 主板逼近3300! 世界今日讯

今日盘面指数午后维持强势格局,三大股指携手上行,步调一致。其中主板重新逼近3300点整数关口。截止收...

02-20 16:40:23

世界百事通!EBC外汇:外汇学习过程中要注意哪些问题?

炒汇是风投,而投资者在学习炒汇时一样要遭遇来源于销售市场的风险性,以便降低多余的学习成本费,防止...

02-20 14:37:16

强推《铜钱龛世》作者:木苏里(八风不动不通人情高僧G & 性子急脾气炸胆大包天乖张S)|最资讯

【推文指数】️(四星半)【标签】|强强|神神鬼鬼|克制内敛|欢喜冤家|【小说大小】797KB【微剧透】一位...

02-20 12:07:24

天天微资讯!如何把照片压缩到100k以下_怎么把照片压缩到100k

1、首先,在Photoshop中打开一张图片,如图。2、2、然后,点击文件选择存储为Web所用格式。3、3、最后,适当降

02-20 10:07:36

焦点讯息:横埠镇“3+N”评定“末梢监督”能力

本报讯(吴志敏周若扬)为进一步提升村级纪检委员履职能力,切实做到把全面从严治党触角延伸到村级“末...

02-20 08:42:22

新鲜莲藕要如何保存 新鲜莲藕保存方法 环球今头条

1、盐水保存法:先把要存放的莲藕洗干净,放入水缸内,然后加百分之十的食盐水,可保鲜5个月以上。2、莲...

02-20 05:56:29

大觉寺_说一说大觉寺的简介

夏弥来为大家解答以下的问题,大觉寺,说一说大觉寺的简介,现在让我们一起来看看吧!1、大觉寺又称西山...

02-20 01:05:45

全新奔驰C级旅行版路试谍照曝光,将会在明年上半年亮相

近日,有海外媒体拍摄到了一组全新奔驰C级旅行版车型的路试谍照,新车的一些车身的细节都暴露了出来,全...

02-19 20:52:16

香椿芽、花生芽、豌豆苗等上市 价格不低有些还要预订

■香椿芽■枸杞叶厦门网讯(文 图厦门晚报记者吴佳)老话说,“春吃芽,夏吃瓜,秋吃果,冬吃根”,春...

02-19 17:15:42

雷布朗多星人_驯龙英雄熊王格朗多副本通关攻略

1、进入场景后,踩在标有钥匙的木板上就可以召唤boss(召唤boss攻击自己,想想就疼)。2、挖硫磺!好大的熊。3、Bo

02-19 14:18:49

【天天时快讯】就在19日,雨水节气到!

原标题:就在19日,雨水节气到!2月19日,我们迎来了二十四节气中的第二个节气——雨水。此时,气温回升...

02-19 11:05:11

普陀山大雾断航致大量游客滞留,相关部门:曾单线复航疏散游客|最新

普陀山大雾断航致大量游客滞留,相关部门:曾单线复航疏散游客---2月18日,因海上大雾,浙江舟山普陀山...

02-19 08:52:01

【全球快播报】正步走视频_正步

1、正步正步主要用于分列式和其它礼节性场合。2、口令:正步——走。3、要领:左脚向正前方踢出约75厘米...

02-19 05:13:01

惠州13家基地入选“粤字号”!|全球视讯

惠州13家基地入选“粤字号”!

02-18 23:57:18

全球最新:20元人民币上的渔夫老爷爷去世,享年94岁,去年还在江上撑筏子

2月18日,广西桂林,阳朔县漓江景区发布视频称,20元人民币上的渔夫的原型黄全德老爷爷于18日凌晨4时离...

02-18 20:42:49

世界快讯:测绘类专业就业方向

1、测绘工程--经纬业亮点防军事、经济建设都能少测绘工程严重误读潜力专业招业呈现冰火两重状况令叹已实...

02-18 17:50:52

世界快消息!每个人的善举都被看见——广州发布2022年度慈善榜

南方网讯(记者 张菲菲通讯员 李国全严煦王梦华)2月17日,“读懂中国·慈善视角”——“善城100”第...

02-18 11:53:53

【ES三周年】ElasticSearch数据库简单介绍 世界热文

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfu...

02-18 09:14:56

怎样学会打篮球_怎样学会打篮球的作文100字|全球热文

1、篮球是从小到大大家都很喜欢玩的运动之一,有助于身高发育,可以争夺自己的抵抗力。一般打篮球都很hi...

02-18 06:52:18

每日快播:2月17日基金净值:宝盈优势产业混合A最新净值3.0933,跌1.07%

2月17日,宝盈优势产业混合A最新单位净值为3 0933元,累计净值为3 2433元,较前一交易日下跌1 07%。...

02-18 01:57:08

环球速看:河南安阳一楼盘“0首付0月供”购房?售楼处称只是营销政策

河南安阳一楼盘“0首付0月供”购房?售楼处称只是营销政策

02-17 22:06:43

当前关注:如何给鹿皮染色

你需要的东西工艺鹿皮服装染料塑料桶船桨或金属管鹿皮可以用衣物染料染色,制成衣服、毯子或其他工艺品...

02-17 20:01:48

最资讯丨抢镜哥_关于抢镜哥的介绍

1、抢镜哥是指在2013年央视春节联欢晚会中歌曲节目《甲板上的马头琴》的男伴舞。2、因其表现抢眼,被网...

02-17 17:50:58

橘子洲的梅花开了,“喷香滴,超好看”

2月10日上午,淅淅沥沥的小雨让热闹了一整个春节的橘子洲终于清静下来,但靠近洲头的梅园热闹不减。此刻...

02-17 16:32:21

今日快看!国铁集团:春运首日全国铁路发送旅客621.7万人次

据国铁集团消息,1月7日,全国铁路发送旅客627万人次。1月8日,全国铁路预计发送旅客610万人次,开行旅...

02-17 15:10:38

世界速读:三项举措!贵阳市搭建金融平台支持青年创业

三项举措!贵阳市搭建金融平台支持青年创业

02-17 12:12:57

全球短讯!淮滨:送法进商户 护农保春耕

“一定要到正规厂家购买种子化肥,认准商标、厂名,看清生产日期、保质期、合格证等,千万不要图便宜进...

02-17 10:43:04

总台记者探访丨土耳其哈塔伊省地震重灾区城市商业中心被毁 民众盼灾后重建|天天要闻

总台记者探访丨土耳其哈塔伊省地震重灾区城市商业中心被毁民众盼灾后重建---当地时间2月6日,土耳其南部...

02-17 08:56:04

天天观热点:蜂蜜减肥的正确吃法及最佳时间_蜂蜜减肥怎么吃

1 用50度左右的温水冲泡蜂蜜:蜂蜜中不仅含有葡萄糖和果糖,还含有蜂蜜的维生素、酶和矿物质。如果用热...

02-17 06:03:09

广州金荣贸易有限公司-环球热讯

1、广州金荣贸易有限公司于2017年06月15日成立。2、法定代表人孙蓉蓉,公司经营范围包括:收藏品批发(...

02-17 00:49:55

推进式关门器价位_推进式搅拌桨 全球快讯

1、推进式搅拌是推进式的搅拌;浆式搅拌是浆水的搅拌。以上就是【推进式关门器价位,推进式搅拌桨】相关...

02-16 21:22:50

天津市北戴河工人疗养院位置_天津市北戴河工人疗养院-通讯

1、天津市北戴河工人疗养院隶属于天津市总工会,始建于1951年,坐落在驰名中外的避暑胜地北戴河海滨风景...

02-16 18:50:41

海尔兄弟是哪里的动画片_海尔兄弟是哪国的动画片
新手怎么下象棋_新手学下象棋的技巧-天天新动态
热门看点:被执行人需要多久撤销
当前关注:钒产品淡季不淡 龙头企业忙扩产
天天快看:御湖天下
“宅里种4树,子孙能致富”,养1棵代表吉祥,养2棵金碧辉煌,美-环球即时看
焦点热文:暮江吟古诗原文_暮江吟古诗的意思
独家|无锡众能:胥明军并未担任过公司高管-环球快看点
猪年大吉简笔画图片_猪年大吉简笔画
“慈善博主”造假摆拍,伪善是门残酷的流量生意_环球讯息
威少助快船冲冠?仅4成左右腾讯网友看好 超半数持怀疑态度
尽职尽责 深入调研 世界观点
俄罗斯政府:中印等19国公民可根据酒店订单获最长6个月旅游签证 环球观察
【独家焦点】广州黑茶饮文化发展有限公司
百世快递|全球聚焦
微资讯!2022年京津冀经济总量突破10万亿元 新兴经济快速发展
振兴新突破争当“技术先锋”!沈北新区举办第一届食品化验员技能大赛
源达:指数携手上攻 主板逼近3300! 世界今日讯
世界百事通!EBC外汇:外汇学习过程中要注意哪些问题?
强推《铜钱龛世》作者:木苏里(八风不动不通人情高僧G & 性子急脾气炸胆大包天乖张S)|最资讯
天天微资讯!如何把照片压缩到100k以下_怎么把照片压缩到100k
焦点讯息:横埠镇“3+N”评定“末梢监督”能力
新鲜莲藕要如何保存 新鲜莲藕保存方法 环球今头条
大觉寺_说一说大觉寺的简介
全新奔驰C级旅行版路试谍照曝光,将会在明年上半年亮相
香椿芽、花生芽、豌豆苗等上市 价格不低有些还要预订
雷布朗多星人_驯龙英雄熊王格朗多副本通关攻略
【天天时快讯】就在19日,雨水节气到!
普陀山大雾断航致大量游客滞留,相关部门:曾单线复航疏散游客|最新
【全球快播报】正步走视频_正步
惠州13家基地入选“粤字号”!|全球视讯
全球最新:20元人民币上的渔夫老爷爷去世,享年94岁,去年还在江上撑筏子
世界快讯:测绘类专业就业方向
世界快消息!每个人的善举都被看见——广州发布2022年度慈善榜
【ES三周年】ElasticSearch数据库简单介绍 世界热文
怎样学会打篮球_怎样学会打篮球的作文100字|全球热文
每日快播:2月17日基金净值:宝盈优势产业混合A最新净值3.0933,跌1.07%
环球速看:河南安阳一楼盘“0首付0月供”购房?售楼处称只是营销政策
当前关注:如何给鹿皮染色
最资讯丨抢镜哥_关于抢镜哥的介绍
橘子洲的梅花开了,“喷香滴,超好看”
今日快看!国铁集团:春运首日全国铁路发送旅客621.7万人次
世界速读:三项举措!贵阳市搭建金融平台支持青年创业
全球短讯!淮滨:送法进商户 护农保春耕
总台记者探访丨土耳其哈塔伊省地震重灾区城市商业中心被毁 民众盼灾后重建|天天要闻
天天观热点:蜂蜜减肥的正确吃法及最佳时间_蜂蜜减肥怎么吃
广州金荣贸易有限公司-环球热讯
推进式关门器价位_推进式搅拌桨 全球快讯
天津市北戴河工人疗养院位置_天津市北戴河工人疗养院-通讯
汽车疑问解答:前方起飞是什么意思 焦点热讯
X 广告
行业动态
X 广告

Copyright ©  2015-2022 华中植物网版权所有  备案号:京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com