首先是个人理解

一、确认应答:

可以在消费端设置自动确认应答和手动确认应答。

将第二个参数设置为true,即表示开启自动应答。

channel.basicConsume(queueName,true,deliverCallBack,cancelCallBack);

开启了自动应答之后,不管消费端有没有处理完从队列里拿到的消息,都会将队列中的消息删除掉。

将这个设置为false,就表示开启了手动应答·,只有在执行了

channel.basicAck(参数一(String类型,消息的tag),参数二(boolean类型,是否为批量应答));后,才会删除队里中的该消息。

二、确认发布

确认发布,是在生产端配置的。如果我们要将消息持久化,就需要保证三步

1、要将消息队列持久化

第二个参数设为true

channel.queueDeclare(QUEUE_NAME,true,false,false,null);

2、要将消息持久化

将第三个参数设为MessageProperties.PERSISTENT_TEXT_PLAIN

channel.basicPublish("",QUEUE_NAME,MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes(StandardCharsets.UTF_8));

3、确认消息发布到了队列中

同步方式:

先开启channel.confirmSelect();//默认是关闭的

如果想将消息单个确认,在每一次发送channel.basicPublish()的后面写channel.waitForConfirms()
如果消息没有发布到队列中,线程会阻塞,直到消息发布成功或超时,才会继续执行,函数返回值为boolean,意味着如果超时,我们可以重新发送该消息到队列上。
如果想批量处理确认,就可以在多次发送channel.basicPublish()后执行channel.waitForConfirms()。
异步发送:
先开启channel.confirmSelect();
然后开启channel.addConfirmListener(confirmCallBack1(成功发布的回调), confirmCallBack2(未成功发布的回调));开启异步监听器监听是否发布到队列中,如果成功,将执行confirmCallBack1,未成功将执行confirmCallBack2。

其实这里我有些疑问, 为什么异步的方式返回的消息序号是有间隔的,并不是发了多少就确认回来多少,但是队列中的元素又没有少,我猜测可能是异步回调的线程被操作系统吃掉了。

RabbitMQ确认应答和确认发布相关推荐

  1. springboot + rabbitmq 用了消息确认机制,感觉掉坑里了

    最近部门号召大伙多组织一些技术分享会,说是要活跃公司的技术氛围,但早就看穿一切的我知道,这 T M 就是为了刷KPI.不过,话说回来这的确是件好事,与其开那些没味的扯皮会,多做技术交流还是很有助于个人 ...

  2. rabbitmq怎样确认是否已经消费了消息_【朝夕专刊】RabbitMQ生产者/消费者消息确认...

    欢迎大家阅读<朝夕Net社区技术专刊> 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦! 上篇文章介绍了R ...

  3. TCP协议可靠性保证(确认应答机制,超时重传机制,流量控制,拥塞窗口)

    上一次我们知道了TCP协议通过连接管理机制保证可靠性,今天我们继续来看一看TCP协议中其他几种保证可靠性的方法. · 确认应答机制  · 超时重传机制  · 流量控制  · 拥塞窗口 确认应答机制  ...

  4. 4-5:TCP协议之确认应答(ACK)机制和超时重传机制

    文章目录 一:TCP的确认应答(ACK)机制 二:超时重传机制 一:TCP的确认应答(ACK)机制 在TCP中,当发送端的数据达到接收主机时,接收端主机会返回一个已收到消息的通知,这个消息叫做ACK( ...

  5. RabbitMQ:消息发送确认 与 消息接收确认(ACK)

    默认情况下如果一个 Message 被消费者所正确接收则会被从 Queue 中移除 如果一个 Queue 没被任何消费者订阅,那么这个 Queue 中的消息会被 Cache(缓存),当有消费者订阅时则 ...

  6. RabbitMQ消息接收的确认方式

    一.消息接收手工确认 消息从队列推送至消费者后,消息被消费,并从队列中移除.若在消费者消费消息的过程中出现异常或回滚,当消费者从异常中恢复后,想要重新处理异常的消息,然而消息已经从队列中移除,无法再次 ...

  7. 【TCP 协议2】确认应答、超时重传机制

    文章目录 前言 一.确认应答 1, 什么是确认应答 2, 序列号和确认应答号 二.超时重传 1, 什么是超时重传 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:

  8. 网络原理 --- 传输层Ⅱ TCP协议中的确认应答,超时重传和连接管理

    文章目录 网络原理 传输层 TCP 协议 TCP的基本特性 1.确认应答 2.超时重传 3.连接管理 ❗❗①建立连接(三次握手) ②断开连接(四次挥手) 总结 网络原理 介绍TCP/IP协议中每一层里 ...

  9. TCP 中确认应答机制

    目的 保证 TCP 协议可靠的核心机制. 示例 背景:我给老板发微信. 场景一: 我:老板,我想删库! 老板:滚!(确认应答,ACK) 我收到老板的确认应答(ACK) 之后,才能知道自己不可以删库. ...

最新文章

  1. sklearn可视化不同数据划分方法的差异:KFold, ShuffleSplit,StratifiedKFold, GroupKFold, StratifiedShuffleSplit.......
  2. 识别字符串是否为数字
  3. UVa1491 - Compress the String(dfs)
  4. CTFshow 文件上传 web155
  5. linux eclipse go插件,Eclipse的Go插件(goclipse)
  6. 听腾讯 TEG 大佬谈腾讯万亿级 Elasticsearch 技术解密
  7. FactoryBean
  8. 非常好用的卸载软件工具【纯净绿色卸载】
  9. 播布客里小布老师的全部视频收集
  10. 关于支付宝口碑的界面问题
  11. OutMan——集合对象的内存管理、copy的介绍及使用
  12. 魔兽争霸3技术分析资源汇总
  13. Import “github.com/gogo/protobuf/gogoproto/gogo.proto“ was not found or had errors.
  14. 搭建配置私服-nexus ,Maven中的使用——3
  15. CDN(内容分发网络)
  16. android 窗口切换花屏,分享Android4平台二级页面滚动花屏问题的解决方案v1.0.0
  17. sqlserver-创建表
  18. 浏览记录-history
  19. 视频跟踪——TLD算法
  20. 微信公众号post方法Java_Java HttpClient 如何伪装微信浏览器进行POST请求

热门文章

  1. WMS、WFS、WMTS、TMS
  2. 低成本2.4G+MCU的SOC芯片,极其适合做低成本玩具灯控等方案
  3. 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲
  4. 从零开始学习SVM(二)---松弛变量
  5. 自动驾驶仿真:ECU TEST 、VTD、VERISTAND连接配置
  6. final修饰的变量就是常量?final修饰局部变量在栈还是堆还是常量池中?
  7. Google Chrome 浏览器常用快捷键
  8. 高校数字化实验室(实训室)综合管理系统
  9. abs传感器电压有几伏电_汽车ABS传感器的正常电阻值一般为多少呢 还有没有其它检测方法呢 还有它的信号线怎么检测 一般...
  10. 节流(Throttle)与防抖(Debounce)区别与demo实现+ 图解