概述

automanual区别其实就如字面意思一般,auto代表自动确认消息,只要消费者的方法执行完了,就自动告诉mq当前消息确认.manual则是需要手动通知mq。不需要想的很复杂就是这么直接.

auto自动确认

  1. 消息成功被消费,没有抛出异常,则自动确认,回复ack。
  2. 当抛出ImmediateAcknowledgeAmqpException异常,则视为成功消费,确认该消息。
  3. 当抛出AmqpRejectAndDontRequeueException异常的时候,则消息会被拒绝丢弃,并且不会重新入队。
  4. 其他的异常,则消息会被拒绝,且requeue = true(默认就是true)时会重新入队

manual人工确认

无论有没有异常,标准只有是否主动调用basicAck()、basicNack()等方法,没有调用则一直阻塞.

因此有异常时,(有重试就重试),抛出异常后,没有调用时,还是会一直阻塞。即使是auto模式的那两个特殊的异常,在manual中都是一样的,不会有特殊处理.

关于default-requeue-rejected(重新入队)属性的优先级

server:port: 9009
spring:rabbitmq:host: xxxxport: 5672username: xxxxpassword: xxxxvirtual-host: /fchanlistener:simple:#(默认值为true)在消费者出现异常时是否丢弃该消息还是重新入队,true:重新入队,入队后在队首#default-requeue-rejected: true#qos = concurrency * prefetch#concurrency: 1 #max-concurrency: 5#qos = concurrency * prefetchprefetch: 2#acknowledge-mode: auto
  1. 最高优先级:AmqpRejectAndDontRequeueException处理的requeue = false(剩下那个特殊异常视为成功,与此处无关),抛出这个异常的时候直接就是拒绝并且丢弃。
  2. 其次是手动确认时basicNack()boolean requeue 参数
  3. 接着便是这个参数定义的重新入队default-requeue-rejected
  4. auto模式中,处理其他异常时,拒绝消息,此时如果配置了default-requeue-rejected=false则会丢弃消息

rabbitmq消费端auto和manual区别;处理mq的requeue相关推荐

  1. RabbitMQ消费端停止问题

    RabbitMQ消费端过段时间会停止消费,为了解决这个问题: 可以在消费端的首页添加计时器进行刷新操作,这样消费端就可以一直工作. <script type="text/javascr ...

  2. 面试官:说说RabbitMQ 消费端限流、TTL、死信队列

    欢迎关注方志朋的博客,回复"666"获面试宝典 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户 ...

  3. RabbitMQ(七):RabbitMQ 消费端限流、TTL、死信队列是什么?

    消费端限流 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我 ...

  4. RabbitMQ 消费端限流、TTL、死信队列

    目录 消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流 1. 为 ...

  5. RabbitMQ消费端消费机制

    一.确认机制 第一种 public static void getMessage() throws Exception {Connection connection = ConnectionUtil. ...

  6. rabbitmq.“消费端确认收到”和“推送者确认”(2)

    消费端确认模式和数据安全性 当向消费者发送消息时,要考虑消息是否被处理(至少是否被消费者接收到).因为想app,connection等都可能失败,这是基于数据安全的考虑.协议提供了一种机制,当消费者连 ...

  7. rabbitmq 消费端代码获取队列名称_C#调用RabbitMQ实现消息队列的示例代码

    前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队 ...

  8. 消息中间件--RabbitMQ --- 消费端限流 -- 非常重要

    什么是消费端的·限流? 假设一个场景,首先,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面的情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理 ...

  9. Rabbitmq专题:rabbitmq消费端如何做限流?

    文章目录 1. 什么是消费端的限流? 2. 解决方案 3. 代码示例 1. 什么是消费端的限流? 场景:在订单高峰期,rabbitmq上已经堆积了很多消息等待消费,如果没有任何限流措施,贸然启动一个消 ...

最新文章

  1. 第八章 路由协议原理
  2. 软件测试江湖之公会武器之争
  3. 深入了解以太坊虚拟机
  4. 在tornado里面使用reverse_url
  5. 三维坐标系带偏航角俯仰角_浅谈三维旋转的三种方法及差异
  6. 基于GNS3的ssl配置
  7. xutils使用流程
  8. AcWing 828. 模拟栈
  9. poj - 1509 Glass Beads
  10. lr压测mysql数据库_MySQL数据库性能测试的方法
  11. java jsonarray 拷贝_JSONObject与JSONArray使用
  12. Spring源码下载并导入Idea
  13. 第3章基本程序设计结构(java知识点笔记)
  14. pygame研究之利用sprite的UI架构实现
  15. SpringBoot后台java下载文件及注意的地方
  16. SpringBoot整合JavaMail通过阿里云企业邮箱发送邮件
  17. 运城学院计算机课,主讲教师
  18. 计算机硬件报警声音,有关电脑发出警报声的.
  19. 给女友的网页小惊喜--相册万花筒
  20. IIS+php环境下:上传文件出现:windows server PHP Warning: mkdir(): Permission denied 解决办法

热门文章

  1. RTK ? PPK ?到底该选啥
  2. Python -- 硬盘容量单位及网络速率单位换算
  3. Java编程思想笔记——并发3
  4. 聚类评价指标(轮廓系数 Silhouette coefficient)
  5. 有没有适合男的下班以后做的副业?
  6. 微信小程序实现登录页面
  7. 锁存器(latch)、触发器(flip-flop)、寄存器(register)的区别
  8. Java每日一讲线程池的总结
  9. MySQL数据库基础详细教程
  10. RJ45和PSY之间为什么用网络变压器