栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RabbitMQ如何保证消息的可靠性

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ如何保证消息的可靠性

在了解RabbitMQ消息可靠性之前,先来了解一下RabbitMQ整个消息投递的路径:

producer ——> exchange ——> queue ——> consumer

RabbitMQ保证消息的可靠性主要分为两个部分:

(1)消息投递(生产者向MQ发送消息,确保MQ接收到消息)

(2)消息确认(消费者签收消息)

1、消息投递

在使用RabbitMQ的时候,作为消息发送方拒绝任何消息丢失或者投递失败场景,RabbitMQ为我们提供了两种方式来保证消息的投递可靠性。

/confirm/i确认模式return退回模式

/confirm/i确认模式

(1)消息从producer——>exchange,会回调/confirm/iCallback,重写/confirm/i方法有3个参数:

correlationData:相关配置信息

ack:exchange交换机是否成功收到信息,true成功,false失败

cause:失败原因

return退回模式

消息从exchange——>queue,当交换机到队列路由失败时才会执行returnCallback 

步骤:

代码: 

2、消息确认

Consumer ack 消费者确认

ack指Acknowledge,确认,表示消费者收到消息后的确认方式。

有3种确认方式:

自动确认:acknowledge="none"手动确认:acknowledge="manual"根据异常情况确认:acknowledge="auto"

其中自动确认是指,一旦消息被consumer收到,则自动确认收到,并将相应的message从RabbitMQ缓存中移除,但在实际业务处理中,很可能消息接收到,业务处理出现异常,那么该消息就会丢失。如果设置了手动确认模式,则在业务处理成功后,调用channel.basicAck()手动签收,如果出现异常,则调用channel.basicNack()方法,让其自动重新发送消息。

步骤: 

代码:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号