当前位置: 首页 > news >正文

RabbitMQ中,basicAck、basicNack和basicReject是三种核心的消息确认机制

channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);  channel.basicReject(message.getMessageProperties().getDeliveryTag(), false); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); 

在RabbitMQ中,basicAckbasicNackbasicReject是三种核心的消息确认机制,作用及区别如下:


1. basicAck(成功确认)

  • 作用‌:明确告知RabbitMQ消息已成功处理,应从队列中移除。
  • 参数说明‌:
    • deliveryTag:消息唯一标识符(单调递增)。
    • multiple=false:仅确认当前消息(若为true则批量确认此前所有未确认消息)。
  • 示例场景‌:
    channel.basicAck(deliveryTag, false); // 确认单条消息处理成功 

2. basicNack(批量拒绝)

  • 作用‌:拒绝消息并支持批量操作,可选择是否重新入队。
  • 参数说明‌:
    • deliveryTag:消息标识符2。
    • multiple=false:仅拒绝当前消息(true则拒绝此前所有未确认消息)。
    • requeue=true:消息重新入队(false则丢弃或进入死信队列)。
  • 示例场景‌:
    channel.basicNack(deliveryTag, false, true); // 拒绝单条消息并重新入队 

3. basicReject(单条拒绝)

  • 作用‌:拒绝单条消息,功能类似basicNack但不支持批量操作。
  • 参数说明‌:
    • deliveryTag:消息标识符。
    • requeue=false:直接丢弃或进入死信队列(true则重新入队)。
  • 示例场景‌:
    channel.basicReject(deliveryTag, false); // 拒绝消息且不重新入队 

关键区别总结

方法批量支持重新入队控制典型用途
basicAck不适用成功处理后的确认
basicNack批量失败处理与重试
basicReject单条消息的立即拒绝

注意‌:

  • 若消息被拒绝且未重新入队,且队列配置了死信交换器(DLX),消息会路由至死信队列。
  • 自动确认模式(autoAck=true)下消息一旦接收即被视为确认,存在丢失风险。
http://www.lryc.cn/news/576912.html

相关文章:

  • 左神算法之矩阵旋转90度
  • 浮油 - 3 相分层和自由表面流 CFX 模拟
  • github上传代码步骤(http)
  • Docker安装的gitlab配置ssl证书
  • 电力协议处理框架C++版(一)
  • ECMAScript 2019(ES2019):数组与对象操作的精细化升级
  • 【linux】权限深入解析
  • Cursor 教程:用 Cursor 创建第一个 Java 项目
  • Mac homebrew 安装教程
  • 【数据集处理】基于 3D-GloBFP建筑轮廓数据 栅格化建筑数据(完整Python代码)
  • 【模拟】数⻘蛙(medium)
  • MybatisPlus-02.快速入门-入门案例
  • RagFlow 更适合企业级深度应用,FastGPT 更适合快速开发和原型验证
  • Kafka4.0初体验
  • games101 作业6
  • 从GPTs到Real智能体:目前常见的几种创建智能体方式
  • [双指针]1498. 满足条件的子序列数目
  • Mybatis多条件查询设置参数的三种方法
  • Linux系统移植15:Linux内核编译
  • 数据挖掘、机器学习与人工智能:概念辨析与应用边界
  • Ubuntu服务器(公网)- Ubuntu客户端(内网)的FRP内网穿透配置教程
  • 通达信【MACD趋势增强系统】幅图(含支撑压力位)
  • 模拟多维物理过程与基于云的数值分析-AI云计算数值分析和代码验证
  • WebRTC系列:(一)MacOS开发环境搭建(Vscode + Clangd)
  • 【Linux手册】进程等待:必要性剖析与wait、waitpid等多种方式实操指南
  • 循环神经网络的概念和案例
  • JavaScript中的Class类
  • mac触摸板设置右键
  • BULL价值计算评估
  • vue2 第三节 计算属性_侦听器 watch_生命周期