RabbitMQ如何保证消息的可靠性

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

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

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

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

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

1、消息投递

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

  • confirm确认模式
  • return退回模式

confirm确认模式

(1)消息从producer——>exchange,会回调confirmCallback,重写confirm方法有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()方法,让其自动重新发送消息。

步骤:

代码:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值