上面那种方式非常慢,与单个等待确认消息相比,先发布一批消息然后一起确认可以极大地提高吞吐量,当然这种方式的缺点就是:当发生故障导致发布出现问题时,不知道是哪个消息出现问题了,我们必须将整个批处理保存在内存中,以记录重要的信息而后重新发布消息。当然这种方案仍然是同步的,也一样阻塞消息的发布。

/*
* 发布确认模式,
* 1、单个确认
* 2、批量确认
* 3、异步批量确认
* */
public class ComfirmMessage {// 批量发消息的个数public static final int MESSAGE_COUNT = 1000;public static void main(String[] args) throws Exception {//2、批量确认// 发布1000个批量确认消息,耗时37msComfirmMessage.publishMessageBatch();}public static void publishMessageBatch() throws Exception{Channel channel = RabbitMqUtils.getChannel();String queueName = UUID.randomUUID().toString();channel.queueDeclare(queueName,false,false,false,null);// 开启发布确认channel.confirmSelect();// 开始时间long begin = System.currentTimeMillis();// 批量确认消息大小int batchSize = 1000;// 批量发送 批量确认for (int i = 0; i < MESSAGE_COUNT; i++) {String message = i + "";channel.basicPublish("",queueName,null,message.getBytes(StandardCharsets.UTF_8));// 判断达到100条消息的时候,批量确认一次if (i%batchSize == 0){// 确认发布channel.waitForConfirms();}}// 结束时间long end = System.currentTimeMillis();System.out.println("发布"+MESSAGE_COUNT+"个批量确认消息,耗时"+ (end - begin) + "ms");}
}

RabbitMQ批量确认发布相关推荐

  1. RabbitMQ------发布确认(单个确认、批量确认、未确认)(四)

    RabbitMQ------发布确认(四) 发布确认原理 生产者将信道设置为confirm模式,一旦信道进入confirm模式,所有再该信道上面发布的消息都会被指派一个唯一的ID(从1开始),一旦消息 ...

  2. Java教程:RabbitMq如何开启发布手动确认模式,采用及时或异步方式确定消息是否发送到队列

    引言: 自我们安装好rabbitmq之时,系统默认生产者与消费者发布消费机制为自动模式,也就是说无需我们知道是否成功,即发布方法调取之后,消费者无异常后,整个流程完毕,但由于我们业务当中,由于网络波动 ...

  3. RabbitMQ确认应答和确认发布

    首先是个人理解 一.确认应答: 可以在消费端设置自动确认应答和手动确认应答. 将第二个参数设置为true,即表示开启自动应答. channel.basicConsume(queueName,true, ...

  4. RabbitMQ消息确认机制

    文章目录 1. 事务机制 2. Confirm模式 2.1 生产者 2.1.1 普通Confirm模式 2.1.2 批量Confirm模式 2.1.3 异步Confirm模式 2.2 消费者 3. 其 ...

  5. Net中使用 RabbitMq | Confirm确认消息

    RabbitMQ  消息确认机制 - 消费者确认 由于生产者和消费者不直接通信,生产者只负责把消息发送到队列,消费者只负责从队列获取消息(不管是push还是pull). 消息被"消费&quo ...

  6. RabbitMQ—发布消息确认和消费消息确认

    目录 序言 消息发布流程 发布消息确认 一.事务使用 二.Confirm发送方确认模式 方式一:普通Confirm模式 方式二:批量Confirm模式 方式三:异步Confirm模式 扩展知识 消费消 ...

  7. 学成在线--14.使用RabbitMQ完成页面发布

    文章目录 一.技术方案 二.页面发布--消费方 1.需求分析 2.创建Cms Client工程 1)创建maven工程 2)配置文件 3)启动类 3.RabbitmqConfig配置类 4.定义消息格 ...

  8. RabbitMQ手动确认模式(项目开发常用模式)

    RabbitMQ 手动确认模式(日常项目开发常用模式) 借鉴导言 架构及工作原理 项目开发使用(公司常用) 借鉴导言 此文借鉴多名CSDN用户博客,并将其博文中关于MQ常用的点,进行了归纳整理 借鉴博 ...

  9. wordpress自动批量定时发布插件 DX-auto-publish

    DX-auto-publish是一款wordpress自动发布插件,方便实用. 该wordpress插件的主要功能如下: 1.能够自动批量定时发布wordpress站点的草稿文章,无需每篇文章都手动设 ...

最新文章

  1. javaWeb引入相关的jar
  2. 推荐几个华为、字节跳动、蚂蚁金服的大佬公号
  3. linux系统下deepin eclipse不能显示源码报class File Editor Source not found
  4. oracle获取下级函数,从oracle获取函数和过程签名列表
  5. 005 form组件---基本使用.
  6. PTA-7-1 输出大写英文字母 (15分)(C语言)
  7. 动态规划 —— 区间 DP —— 石子合并三讲
  8. 组态软件开发(zz)
  9. python 的输入 输出
  10. Debug程序的使用
  11. Confluence 6 重新获得附件指南
  12. html5查询通配符,通配符有哪些?
  13. 【性能监测】前端性能监测方法总结(非监测平台)
  14. 《安士全书》善世第一奇书
  15. 微信公众号排版学习之图片篇
  16. 动名词做主语时的谓语动词问题
  17. 1113 小胖子的时钟【水题】
  18. 谈谈如何写好一份简历
  19. C++之函数后面加const
  20. VIM实用指南(1)字符串替换

热门文章

  1. read write spinlock
  2. P2502 [HAOI2006]旅行 最小生成树
  3. BAT 批处理脚本教程
  4. 无法访问gcr.io的几种解决办法
  5. WebSocket协议探究(序章)
  6. JAVAWEB 一一 SpringMVC(注解)
  7. Contains Duplicate --包含相同值
  8. Delphi XE6 TStringHelper中的string类型转换
  9. [推荐]经典炸弹人手机游戏[年兽防御战2]
  10. Zabbix3.X-Zabbix _Agent主动模式的监控(Active)