首页 > 其他分享 >谷粒商城实战笔记-260-商城业务-消息队列-可靠投递-消费端确认

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

时间:2024-08-26 11:54:13浏览次数:7  
标签:false deliveryTag nack 确认 Broker 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

标签:false,deliveryTag,nack,确认,Broker,260,谷粒,商城,消息
From: https://blog.csdn.net/epitomizelu/article/details/141542757

相关文章

  • 免费分享一套Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统【论文+源码+SQL脚
    大家好,我是java1234_小锋老师,看到一个不错的Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统,分享下哈。项目视频演示【免费】Java协同过滤推荐算法的SpringBoot+Vue(图书)商城系统Java毕业设计_哔哩哔哩_bilibili项目介绍伴随着Internet的蓬勃发展,电子商务也取得了......
  • 基于javaweb+jsp的鲜花商城系统
    基于javaweb+jsp的鲜花商城系统的设计与实现~开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+JSP工具:IDEA/Ecilpse、Navicat、Maven系统展示前台后台摘要  当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈......
  • SSM水果商城系统 毕业设计-附源码
    摘要网络购物作为一种全新的销售方式赢得了越来越多销售者的青睐,近年来销售额更是以连年翻番的惊人速度成倍增长.网络购物已经形成了自身特有的网络销售市场和全新的网络营销模式,也使网络营销渠道应运而生.同时,伴随着水果市场的不断扩大,水果行业内的竞争日趋激烈,网络营销......
  • 从多维度视角探讨“开源AI智能名片O2O商城小程序”的设计与管理
    摘要:在数字化转型的浪潮中,产品设计与管理已成为企业竞争力的核心要素。本文旨在从产品设计、产品管理及产品文化三个维度,深入探讨“开源AI智能名片O2O商城小程序”的设计理念与实践策略。通过强调设计即沟通的原则,本文分析了直接控制产品细节的人员如何与用户建立有效沟通渠道,......
  • 私域流量的落脚点与开源 AI 智能名片 2+1 链动商城小程序
    摘要:本文探讨了私域流量的重要性及其落脚点,分析了快钱收割思维在私域流量运作中的弊端。同时,引入开源AI智能名片2+1链动商城小程序,阐述其在成就人格化IP和打造品牌域、通过直播电商规模化变现方面的作用,为企业私域流量的有效运营提供参考。一、引言在当今数字化时代,私......
  • 毕业设计-基于SpringMVC的农产品土特产商城管理系统
    一、项目介绍        基于SpringMVC的农产品土特产商城管理系统分为前端用户端和后台管理系统。        用户端包括注册登录、查看商品列表、查看商品详情、商品加入购物车、购物车结算、评价商品、查看我的订单、编辑个人资料、留言、查看浏览历史等。商品......
  • 毕业设计基于SSM/Springboot的商城项目
    一、前言博主介绍:提供有偿定制化修改疑难代码问题,也可以私信,包括问题定位,代码运行,后台留言答疑[承接Java毕设]。API接口访问http://127.0.0.1:8081/shop/swagger-ui.html管理员访问http://127.0.0.1:8081/shop/admin/login普通用户访问http://127.0.0.1:8081/sh......
  • 【微信小程序开发】栀子手作花花微信小程序商城开发最佳实践
    本文介绍了通过uniapp技术实现了一套栀子手作在线购物商城系统。包含首页、分类、我的等常用功能入口。一、功能演示首页:包含了商品介绍,领劵中心和商品列表区域。商品分类:支持不同的商品分类和商品搜素。商品详情:包含了商品详细的描述信息,透出了分享、首页、客服等入口。......
  • 技术分享-商城篇-用户订单管理(十五)
    前言在前面的文章中,我们详细阐述了商品模块、购物模块、支付模块等B2B2C(Business-to-Business-to-Consumer)电商中核心基础模块,接下来我们来聊一下基础模块中最后一个环节订单模块,订单模块属于购物体系闭环内容,也是必不可少的基础模块,它承接着后续业务操作,如售后、发货、订......
  • 商城项目商品检索使用ES验证保存的商品信息-----商城项目
    {"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{......