rabbitmq 死信队列,消息过期不转发问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dunhanson
V2EX    问与答

rabbitmq 死信队列,消息过期不转发问题

  dunhanson 2023 年 8 月 21 日 1627 次点击
这是一个创建于 897 天前的主题,其中的信息可能已经有所发展或是发生改变。

1 、通过 RabbitMQ 的 DLX 和 TTL 来实现延迟队列

2 、消息,00:00:00 和 00:30:00 ,到点了都没有转发

3 、奇怪的是我访问 web 界面,get message 后就自动会转发了

14 条回复    2023-08-22 10:50:53 +08:00
brader
    1
brader  
   2023 年 8 月 21 日
同个队列的所有消息,延迟时间都是一样的吗?
dunhanson
    2
dunhanson  
OP
   2023 年 8 月 21 日
@brader 不一样,一个 00:00:00 ,一个 00:30:00
dunhanson
    3
dunhanson  
OP
   2023 年 8 月 21 日
但我那些 9 点,12 点,15 点,18 点 消息 挺正常的
linauror
    4
linauror  
   2023 年 8 月 21 日
死信队列有个限制是,队列里的延迟时间要一致,否则前面的消息没到过期时间,那么后面的其他消息也不会被处理。
有两个处理方式,一个是根据过期时间分别建立死信队列,另外一个是使用 Delayed Message 插件
brader
    5
brader  
   2023 年 8 月 21 日
@dunhanson 我应该就是这个问题了,我记得我之前看过 rabbitmq 延迟队列相关的文章,其中提到一个弊端就是,同一个队列前面入队的长延时消息会阻塞住后面短延时的消息,比如:
先进去了一条需要延时 1 小时的消息,再进去一条需要延时半小时的小时,实际上半小时后,后一条消息不会出去,因为队列先进先出的特性,被前面的消息堵住了。

简易解决方案就是把不同延时时间的消息分开来,分到不同队列去
jworg
    6
jworg  
   2023 年 8 月 21 日
前面有消息没处理吧,用不严谨的话来说是阻塞的,必须等上一个消息消费了,过期的消息才会被处理,然后转发
linauror
    7
linauror  
   2023 年 8 月 21 日
不过你这个访问一下就转发了,确实挺奇怪的
brader
    8
brader  
   2023 年 8 月 21 日
@linauror 不奇怪,他把前面哪条长延时还未到时间的消息消耗掉了,后面一条短延时已经到时间的消息,自然就出队了
dunhanson
    9
dunhanson  
OP
   2023 年 8 月 21 日
@linauror
@brader
@jworg 原来如此,这么坑
linauror
    10
linauror  
   2023 年 8 月 21 日
@brader 看到了,截图显示的消息已经是 redelivered 状态,表示前面那条消息重新入队了
silentsky
    11
silentsky  
   2023 年 8 月 21 日 via Android
延迟队列很多坑 建议别用 rabbitmq
sharper
    12
sharper  
   2023 年 8 月 21 日 via iPhone
Rabbitmq 会有队头阻塞问题,可以看看他的插件有没有解决这个问题
VeryZero
    13
VeryZero  
   2023 年 8 月 22 日
还是用插件做定时吧,用死信队列遇到队头阻塞要出事故的
dunhanson
    14
dunhanson  
OP
   2023 年 8 月 22 日
@silentsky
@starck
@VeryZero 目前场景用着还行,后续看看插件这块
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4500 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 38ms UTC 05:59 PVG 13:59 LAX 21:59 JFK 00:59
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86