回答这个问题之前有一个疑问,看到很多文章说message 数量超过限制以后会剔除最先入队的消息,也有说会拒绝新来的消息。
今天看了官网的文档找到了答案。
message数量超过限度之后,可以根据overflow 策略去处理消息。上面说的两种方式都是可选择的策略。
RabbitMQ 消息溢出策略设置
RabbitMQ 提供了多种机制来处理消息溢出(如队列达到内存或磁盘限制时的行为),可通过策略(Policy)进行配置。以下是关键参数和设置方法:
溢出行为参数(overflow)
在队列策略中设置 overflow 参数,决定队列达到最大长度时的行为:
drop-head(默认):丢弃队列头部的旧消息(类似 FIFO 淘汰)。reject-publish:拒绝新消息,生产者会收到basic.return通知(需配合publisher confirms使用)。reject-publish-dlx:拒绝新消息并将其路由到死信交换器(需配置死信交换器)。
示例策略设置命令:
rabbitmqctl set_policy overflow_policy "^queue_name$" '{"overflow":"reject-publish"}' --apply-to queues
监控与告警
通过 Prometheu

最低0.47元/天 解锁文章
682

被折叠的 条评论
为什么被折叠?



