专栏首页凯哥JavaRabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息
原创

RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息

RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息

理解Confirm消息确认机制:

消息的确认,是指生产者投递消息后,如果broker收到消息,则会给生产者一个应答;

生产者经行接收应答,用来确定这条消息是否正常的发送到broker,这中方式也是消息的可靠性投递的核心保障!

确认机制流程图:

如何实现Confirm确认消息?

第一步:在channel上进行开启确认模式:channel.confirmSelect();

第二步:在channel上添加监听:addConfirmListener,监听成功和失败的返回结果,根据具体的结果对消息进行重新发送,或记录日志等后续操作。

代码实现:

添加确认消息监听是在生产端处理的,所以生产端代码如下:

在channel上添加确认模式:

添加监听的,我们可以看到还有返回监听,关闭shutdown的监听。这里我们选择确认监听:

说明:

在添加确认监听时候,需要一个ConfirmListener listener的参数。这里我们就使用了内部类。其中要实现两个方法:handleAck和handleNack.

handleAck:成功监听,handleNack失败监听。

其中两个产生:long 类型的消息唯一标签,boolean类型的是否批量。

我们在来看看消费者端:

启动服务:

启动消费者,我们在管控台查看:

路由exchanges列表:

队列和路由都已经创建了。接下来,我们启动生产者,观察控制是否接收到应答:

我们可以看到,生产者已经打印出投递成功的确认消息。

本节总结:

相关代码已发布在git上,欢迎大家下载查看

系列教程持续更新中~~。欢迎大家一起学习

git地址欢迎关注凯哥公众号:凯哥Java(kaigejava)或访问凯哥个人博客:www.kaigejava.com

下节预告:

在下节中,我们将讲解return消息机制

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java并发包下锁学习第二篇Java并发基础框架-队列同步器介绍

    从图中,我们可以看到AbstractQueuedSynchronizer这个类很重要(在本文中,凯哥就用AQS来代替这个类)。我们先来了解这个类。对这个类了解之...

    凯哥Java
  • Java并发编程之验证volatile指令重排-理论篇

        ​    ​Java并发包下的类中大量使用了volatile关键字。通过之前文章介绍,大家已经知道了volatile的三大特性:共享变量可见性;不保证原...

    凯哥Java
  • java爬虫问题二: 使用jsoup爬取数据class选择器中空格多选择怎么解决

    在使用jsoup爬取其他网站数据的时候,发现class是带空格的多选择,如果直接使用doc.getElementsByClass(“class的值”),这种方法...

    凯哥Java
  • 用一年的时间,去遇见

    白色而透明的屏幕里,像素点时刻变换着颜色。你看不见的黑暗里,只有风扇快速转动,发出微弱的响声。

    惶心
  • v-selectpage 基于Vue2的高清重制版

    砸漏
  • 亮亮视野完成亿元B+ 轮融资,“中国版Google glass”搭载首款VPU芯片

    新智元
  • 法大大&思为合作,闪电上线“资金安全、交易合法”的房产在线认购|腾讯SaaS加速器·案例库

    ? 来源 | 腾讯SaaS加速器首期项目-法大大&思为科技 ---- 引言:近日,腾讯SaaS“千帆计划”成员、SaaS加速器首期成员法大大,与思为科技达成战...

    腾讯SaaS加速器
  • JavaWeb项目的web.xml加载过程

    简单说一下,web.xml的加载过程。当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一...

    飞狗
  • MySql规范

    where 1. 条件比较 <=> 可以判断null值,=是不可以判断null值 < > >= <= != <=>

    悠扬前奏
  • Python-sqlite3-05-删除记录

    zishendianxia

扫码关注云+社区

领取腾讯云代金券