1. 这是一种简单的确认方式,它是一种同步确认发布的方式,也就是发布一个消息之后只有它被确认发布,后续的消息才能继续发布, waitForConfirmsOrDie(long)这个方法只有在消息被确认的时候才返回,如果在指定时间范围内这个消息没有被确认那么它将抛出异常。

  2. 这种确认方式有一个最大的缺点就是:发布速度特别的慢,因为如果没有确认发布的消息颍会阻塞所有后续消息的发布,这种方式最多提供每秒不超过数百条发布消息的吞吐量。当然对于某些应用程序来说这可能已经足够了。

    /** 发布确认模式,* 1、单个确认* 2、批量确认* 3、异步批量确认* */public class ComfirmMessage {// 批量发消息的个数public static final int MESSAGE_COUNT = 1000;public static void main(String[] args) throws Exception {// 1、单个确认// 发布1000个单独确认消息,耗时567msComfirmMessage.publishMessageIndividually();}public static void publishMessageIndividually() throws Exception {Channel channel = RabbitMqUtils.getChannel();String queueName = UUID.randomUUID().toString();channel.queueDeclare(queueName,false,false,false,null);// 开启发布确认channel.confirmSelect();// 开始时间long begin = System.currentTimeMillis();// 批量发消息for (int i = 0; i < MESSAGE_COUNT; i++) {String message = i + "";channel.basicPublish("",queueName,null,message.getBytes(StandardCharsets.UTF_8));// 单个消息马上进行发布确认boolean flag = channel.waitForConfirms();if (flag){System.out.println("消息发送成功");}}// 结束时间long end = System.currentTimeMillis();System.out.println("发布"+MESSAGE_COUNT+"个单独确认消息,耗时"+ (end - begin) + "ms");}
}

RabbitMQ单个发布确认相关推荐

  1. springboot整合rabbitmq的发布确认,消费者手动返回ack,设置备用队列,以及面试题:rabbitmq确保消息不丢失

    目录 1.生产者发消息到交换机时候的消息确认 2.交换机给队列发消息时候的消息确认 3.备用队列 3.消费者手动ack rabbitmq的发布确认方式,可以有效的保证我们的数据不丢失. 消息正常发送的 ...

  2. RabbitMQ异步发布确认

    异步确认虽然编程逻辑比上两个要复杂,但是性价比最高,无论是可靠性还是效率都没得说,他是利用回调函数来达到消息可靠性传递的,这个中间件也是通过函数回调来保证是否投递成功,下面就让我们来详细讲解异步确认是 ...

  3. RabbitMQ(三)发布确认

    4.1 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队 ...

  4. RabbitMQ 从入门到精通 消息应答 持久化 交换机 队列 发布确认 集群 等

    RabbitMQ消息队列 RabbitMQ 的概念 RabbitMQ 是一个消息中间件:它接受并转发消息.你可以把它当做一个快递站点,当你要发送一个包裹时,你把你的包裹放到快递站,快递员最终会把你的快 ...

  5. RabbitMQ入门(三)消息应答与发布确认

    前言: 消息应答与发布确认都是保证消息不丢失.而重复消费问题则是消息幂等性.(之后会说幂等性) 消息应答: 应答功能属于消费者,消费者在接收到消息并且处理该消息之后,告诉 rabbitmq 它已经处理 ...

  6. RabbitMQ(三)发布确认 Publisher Confirms

    代码仓库:github:https://github.com/stopping5/RabbitMq-Operation-Record.git 本代码示例需要引入rabbitmq依赖 <!-- r ...

  7. 十、RabbitMQ发布确认高级

    RabbitMQ发布确认高级 发布确认SpringBoot版本 发布确认Springboot版本 简单的发布确认机制在应答与签收已经介绍,本内容将介绍整合了 SpringBoot 的发布确认机制. 介 ...

  8. RabbitMQ 消费者回执和发布确认

    为了保证数据安全,消费者和生产者的回执(ack)都是非常重要的. 由于我们无法保证消息都能像我们期望的那样,正常到达另一端或者被 Consumer 消费成功.因此,publisher 和 consum ...

  9. 三、RabbitMQ消息发布时的权衡

    目录标题 RabbitMQ消息发布时的权衡 失败通知 消息发布时的权衡: 加入事务 发送方确认 备用交换器 总结 RabbitMQ消息发布时的权衡 失败通知 mandatory 消息发布时的权衡: 加 ...

最新文章

  1. 汇编语言的程序设计方法(循环结构和分支结构)
  2. 深入理解 python 中的赋值、引用、拷贝、作用域
  3. 运算放大器单电源应用中的使用齐纳二极管偏置方法
  4. 荣新linux培训,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  5. 20万RMB!学数据分析的朋友一定要看!
  6. 《2018中国区块链行业分析报告》(50页PPT全文)
  7. (二)线程--通过委托异步调用方法
  8. linux 重定位arm,Arm linxu启动过程分析(一)
  9. python语言程序设计实践教程陈东_《Python程序设计》(陈春晖)【摘要 书评 试读】- 京东图书...
  10. c++ 类与默认函数、包括构造函数和析构函数的特点
  11. ivar和property
  12. java怎样将多个list写入txt中并且不覆盖原有数据_深入理解JVM,Java程序猿必备修炼之路...
  13. 白帽子讲web安全读后感
  14. 计算机视觉CV目标检测综述
  15. VS2005 安装WTL
  16. mac 固态硬盘 格式化_您可以格式化硬盘或固态硬盘多少次?
  17. 使用Word脚注、尾注给论文添加参考文献并将编号修改成[1]的方法
  18. ubuntu 14.04.5 firefox 浏览器flash插件安装
  19. NFS动态分配PV理解
  20. 机器学习从入门到创业手记-应用与实践

热门文章

  1. MFC视图切换大全总结
  2. 基本数据类型存储空间
  3. 关于 数据文件自增长 的一点理解
  4. Java程序员如何在编码中减少bug存在
  5. ASP.NET2.0中配置文件的加密与解密
  6. webStorm activeCode
  7. linux磁盘管理与分区 转载
  8. 再回首Java第十一天
  9. 【opencv】opencv在图片、视频嵌中英文字符的方法
  10. JavaScript 动态创建标记