谷粒商城实战笔记-260-商城业务-消息队列-可靠投递-消费端确认

一,Ack消息确认机制简介

在这里插入图片描述
消费者端的确认机制(ACK/NACK)是RabbitMQ中一种重要的特性,它允许消费者告知Broker它们是否成功处理了接收到的消息。

1,简介

  1. basic.ack:
    当消费者成功处理了一条消息时,它可以发送一个basic.ack(肯定确认)给Broker,指示这条消息可以安全删除。基本语法如下:

    channel.basicAck(deliveryTag, false); // deliveryTag是消息的唯一标识符,multiple参数设为false表示仅确认这一条消息
    
  2. basic.nack:
    如果消费者无法处理消息,它可以发送一个basic.nack(否定确认)。这可以让Broker重新分发消息,或者直接丢弃它。基本语法如下:

    channel.basicNack(deliveryTag, false, false); // deliveryTag是消息的唯一标识符,multiple参数设为false表示仅确认这一条消息,requeue参数设为false表示直接丢弃
    
  3. 默认行为:
    在默认情况下,消费者一旦接收到消息,消息就会从队列中移除。然而,如果你希望在处理完成后再确认消息,可以关闭自动确认模式,然后手动发送ack/nack信号。

  4. 手动确认模式:
    可以通过设置channel.basicQos(0, true)来开启手动确认模式。在这种模式下,消费者必须显式地发送ack或nack信号,否则消息不会从队列中移除。

  5. nack/reject:
    basic.nack和basic.reject都可以用来否定确认消息。它们的主要区别在于,reject可以指定重试次数,而nack则没有这个选项。reject还可以指定是否重新排队,而nack只能重排或丢弃。

  6. 示例:

    channel.basicConsume(queueName, false, consumerTag, autoAck, arguments, consumer);
    // ...
    channel.basicAck(deliveryTag, false); // 成功处理
    channel.basicReject(deliveryTag, requeue); // 失败处理,requeue为true表示重排,false表示丢弃
    

通过消费者端的确认机制,可以确保消息得到正确的处理,并且在处理失败时能够重新分发。这有助于构建可靠的分布式系统,并防止消息丢失。

2,两个常用的Api

basicAckbasicNack都是RabbitMQ中的消息确认机制,用于告诉Broker消费者是否成功处理了接收到的消息。它们的主要区别在于:

  1. 基本用途:

    • basicAck:用于确认消息已被成功处理,告诉Broker可以从队列中删除该消息。
    • basicNack:用于否定确认消息,告诉Broker消息处理失败,可能需要重新分发或丢弃。
  2. 重排消息:

    • basicAck:不会引起消息重排,因为它只是确认消息已被成功处理。
    • basicNack:可以选择让Broker将消息重新放回到队列中,供其他消费者尝试处理。
  3. 丢弃消息:

    • basicAck:不会导致消息被丢弃。
    • basicNack&#x
  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据引用中提供的信息,谷粒商城是一个B2C模式的电商平台,主要销售自营商品给客户。B2C模式指的是商对客的模式,即商家直接向消费者销售商品和服务。谷粒商城使用微服务架构,这是一种将应用程序拆分成独立且可独立开发、部署和扩展的小型服务的架构。引用还提到谷粒商城的技术涵盖微服务架构、分布式、全栈、集群、部署和自动化运维等方面。 因此,从前慢-谷粒商城篇章6主要讨论的可能是谷粒商城的技术方面,包括微服务架构、分布式、全栈、集群、部署和自动化运维等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [从前慢-谷粒商城篇章1](https://blog.csdn.net/m0_67391121/article/details/125383572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [2020年谷粒商城md笔记](https://download.csdn.net/download/ZHUXIUQINGIT/12543161)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小手追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值