千家信息网

怎么进行RabbitMQ消息的可靠投递

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,怎么进行RabbitMQ消息的可靠投递,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。mq 提供了两种方式确认消息的可靠投递confi
千家信息网最后更新 2026年11月03日怎么进行RabbitMQ消息的可靠投递

怎么进行RabbitMQ消息的可靠投递,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

mq 提供了两种方式确认消息的可靠投递

  • confirmCallback 确认模式

  • returnCallback 未投递到 queue 退回模式

在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两个选项用来控制消息的投递可靠性模式。

rabbitmq 整个消息投递的路径为:
producer->rabbitmq broker cluster->exchange->queue->consumer

message 从 producer 到 rabbitmq broker cluster 则会返回一个 confirmCallback 。
message 从 exchange->queue 投递失败则会返回一个 returnCallback 。我们将利用这两个 callback 控制消息的最终一致性和部分纠错能力。

对于消息异常,可以使用以下方法进行解决

  1. 使用RepublishMessageRecoverer这个MessageRecoverer会发送发送消息到指定队列

  2. 给队列绑定死信队列,因为默认的RepublishMessageRecoverer会发送nack并且requeue为false。这样抛出一场是这种方式和上面的结果一样都是转发到了另外一个队列。详见DeadLetterConsumer

  3. 注册自己实现的MessageRecoverer

  4. 给MessageListenerContainer设置RecoveryCallback

  5. 对于方法手动捕获异常,进行处理

rabbitTemplate的发送流程是这样的:
1 发送数据并返回(不确认rabbitmq服务器已成功接收)
2 异步的接收从rabbitmq返回的ack确认信息
3 收到ack后调用confirmCallback函数
注意: 在confirmCallback中是没有原message的,所以无法在这个函数中调用重发,confirmCallback只有一个通知的作用。

最安全的做法是是使用事务,但是这样效率就会很低,每秒钟处理的message在几百条左右。对于高性能的 mq 来说是非常不可取的。

另一种解决方法如下:在rabbitTemplate异步确认的基础上
1 在本地缓存已发送的 message
2 通过 confirmCallback 或者被确认的 ack,将被确认的message从本地删除
3 定时扫描本地的message,如果大于一定时间未被确认,则重发

这种解决方式也有一定的问题:
想象这种场景,rabbitmq接收到了消息,在发送ack确认时,网络断了,造成客户端没有收到ack,重发消息。(相比于丢失消息,重发消息要好解决的多,我们可以在consumer端做到幂等)。

关于怎么进行RabbitMQ消息的可靠投递问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

消息 方法 问题 队列 方式 模式 两个 函数 场景 更多 处理 帮助 控制 解答 易行 一致 成功 简单易行 一致性 事务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网最新的科技 互联网科技深圳 金诺互联网科技 北京互联网科技公司 互联网科技论坛 互联网科技创新企业排名 上海电发互联网科技有限公司 北京大学互联网科技怎么样 宁夏众和广鑫互联网科技有限公司 港股科技和互联网 江阴互联网智能科技产品进口 注册互联网科技公司经营范围大全 广州市恰铎互联网科技有限公司 互联网科技研发水平 工业互联网展湾科技股份有限公司 上海京穆互联网科技有限公司 互联网企业科技类企业如何做账 互联网科技新闻 福仕德教育科技互联网 科技互联网公司两年变化 互联网络科技 智网互联网科技 互联网科技宣传片 互联网与医疗科技 青海科技产业互联网发展 深圳市罗太互联网科技有限公司 深圳艾果互联网通讯科技 伊宁互联网科技做什么的 科技发展第三阶段互联网时代 小牛互联网科技有限公司地址
0