农业信息网站建设意义老闵行小学排名

bicheng/2026/1/19 11:03:36/文章来源:
农业信息网站建设意义,老闵行小学排名,做网站运营怎么样,多语言做网站发布确认原理 生产者将信道设置成 confirm 模式#xff0c;一旦信道进入 confirm 模式#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)#xff0c;一旦消息被投递到所有匹配的队列之后#xff0c;broker 就会发送一个确认给生产者(包含消息的…发布确认原理 生产者将信道设置成 confirm 模式一旦信道进入 confirm 模式所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)一旦消息被投递到所有匹配的队列之后broker 就会发送一个确认给生产者(包含消息的唯一 ID)这就使得生产者知道消息已经正确到达目的队 列了如果消息和队列是可持久化的那么确认消息会在将消息写入磁盘之后发出broker 回传 给生产者的确认消息中 delivery-tag 域包含了确认消息的序列号此外 broker 也可以设置 basic.ack 的 multiple 域表示到这个序列号之前的所有消息都已经得到了处理 confirm 模式最大的好处在于他是异步的一旦发布一条消息生产者应用程序就可以在等信 道返回确认的同时继续发送下一条消息当消息最终得到确认之后生产者应用便可以通过回调 方法来处理该确认消息如果 RabbitMQ 因为自身内部错误导致消息丢失就会发送一条 nack 消 息生产者应用程序同样可以在回调方法中处理该 nack 消息 简单的来说发布确认的作用就是防止数据丢失 发布确认的策略  开启发布确认的方法 发布确认默认是没有开启的如果要开启需要调用方法confirmSelect每当你要想使用发布确认都需要在channel上调用该方法 单个确认发布 这是一种简单的确认方式它是一种同步确认发布的方式也就是发布一个消息之后只有它被确认发布后续的消息才能够继续发布waitForConfirmsOrDie(long) 这个方法发只有在消息被确认的时候才能够返回如果在指定时间范围内这个消息没有被确认就会抛出异常 这种确认方式有一个最大的缺点就是:发布速度特别的慢因为如果没有确认发布的消息就会 阻塞所有后续消息的发布这种方式最多提供每秒不超过数百条发布消息的吞吐量。当然对于某 些应用程序来说这可能已经足够了 public static void publicMessageIndividually() throws IOException, InterruptedException {Channel channel RabbitMqUtils.getChannel();String queueName UUID.randomUUID().toString();/**生成一个队列* 1.队列名称* 2.队列里面的信息是否持久化磁盘默认情况时在内存* 3.该队列是否只供一个消费者进行消费 是否消费共享 true是允许* 4.是否自动删除 最后一个消费者断开连接之后 该队列是否自动删除 true自动删除 false不自动删除* 5.其他参数 延迟消息等*/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));//服务器返回false或超时内未返回生产者可以消息重新发送boolean flag channel.waitForConfirms();if(flag){System.out.println(消息发布成功);}}long end System.currentTimeMillis();System.out.println(发布 MESSAGE_COUNT 个单独确认消息,耗时 (end - begin) ms);} 批量确认发布 上面的方式发布时是很慢的与单个等待确认相比先发布一批消息让然后一起确认可以极大地提高吞吐量。缺点就是当发生故障导致发布出现问题时不知道是哪个消息出现 问题了我们必须将整个批处理保存在内存中以记录重要的信息而后重新发布消息。当然这种 方案仍然是同步的也一样阻塞消息的发布 public static void publishMessageBatch() throws IOException, InterruptedException {Channel channel RabbitMqUtils.getChannel();String queueName UUID.randomUUID().toString();channel.queueDeclare(queueName,false,false,false,null);//开启发布确认channel.confirmSelect();//批量确认消息大小int batchSize 100;//未确定消息int outstandingMessageCount 0;long begin System.currentTimeMillis();for (int i 0; i MESSAGE_COUNT; i) {String message i;channel.basicPublish(,queueName,null,message.getBytes(StandardCharsets.UTF_8));outstandingMessageCount;if(outstandingMessageCountbatchSize){channel.waitForConfirms();outstandingMessageCount0;}}if(outstandingMessageCount0){channel.waitForConfirms();}long end System.currentTimeMillis();System.out.println(发布 MESSAGE_COUNT 个批量确认消息,耗时 (end - begin) ms);} 异步确认发布 异步确认发布通常指的是在消息发布过程中消息的生产者或发送方在发送消息后不需要等待消息被消费者或接收方确认接收而是可以继续进行其他操作。这种异步确认的机制可以提高系统的并发性和效率 在具体实现上异步确认发布通常涉及到以下几个步骤 消息生产者将消息发送到消息队列或中间件中消息队列或中间件在接收到消息后会为每条消息分配一个唯一的序列号或ID消息队列或中间件将消息投递到相应的消费者队列中消费者从自己的消费者队列中拉取消息并进行处理消费者在处理完消息后会向消息队列或中间件发送一个确认消息表示该消息已经被成功处理消息队列或中间件在接收到消费者的确认消息后会将该确认消息与原始消息的序列号或ID进行匹配确认该消息已经被成功处理消息队列或中间件会向消息生产者发送一个异步确认消息通知消息生产者该消息已经被成功处理 public static void publishMessageAsync() throws IOException {Channel channel RabbitMqUtils.getChannel();String queueName UUID.randomUUID().toString();channel.queueDeclare(queueName,false,false,false,null);//开启发布确定channel.confirmSelect();/*** 线程安全有序的一个哈希表适合用于高并发情况* 1、轻松将序号和消息进行关联* 2、轻松批量删除条目 只需要给到序列号* 3、支持高并发访问*/ConcurrentSkipListMapLong,String outstandingConfirms new ConcurrentSkipListMap();//开始时间long begin System.currentTimeMillis();ConfirmCallback ackCallback (deliveryTag,multiple)-{//是否是批量处理if(multiple){//返回的是小于等于(如果是小于等于需要在参数中加true)当前序列号的未确认消息 是一个 mapConcurrentNavigableMapLong, String confirmed outstandingConfirms.headMap(deliveryTag,true);confirmed.clear();}else{//只清除当前序列号的消息outstandingConfirms.remove(deliveryTag);}System.out.println(确认消息deliveryTag);};ConfirmCallback nackCallback (deliveryTag,multiple)-{String message outstandingConfirms.get(deliveryTag);System.out.println(发布的消息message未被确认序列号deliveryTag);// System.out.println(未确认消息deliveryTag);};//准备消息的监听器 监听哪些消息成功 哪些消息失效channel.addConfirmListener(ackCallback,nackCallback);//批量发送消息for (int i 0; i MESSAGE_COUNT; i) {String message 消息i;/*** channel.getNextPublishSeqNo()获取下一个消息的序列号* 通过序列号与消息体进行一个关联* 全部都是未确认的消息体*/outstandingConfirms.put(channel.getNextPublishSeqNo(),message);channel.basicPublish(,queueName,null,message.getBytes(StandardCharsets.UTF_8));}long end System.currentTimeMillis();System.out.println(发布 MESSAGE_COUNT 个批量确认消息,耗时 (end - begin) ms);} 以上 3 种发布确认速度对比 单独发布消息同步等待确认简单但吞吐量非常有限 批量发布消息批量同步等待确认简单合理的吞吐量一旦出现问题但很难推断出是那条 消息出现了问题 异步处理 最佳性能和资源使用在出现错误的情况下可以很好地控制但是实现起来稍微难些 花费时间对比 public static void main(String[] args) throws IOException, InterruptedException {//单个确认发布ConfirmMessage.publicMessageIndividually();//发布1000个单独确认消息,耗时47298ms//批量确认发布ConfirmMessage.publishMessageBatch();//发布1000个批量确认消息,耗时866ms//异步确认发布ConfirmMessage.publishMessageAsync();//发布1000个批量确认消息,耗时104ms}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安徽智能网站建设制作桐乡住房和建设局网站

简要做一下总结: 为实现类似top的功能,我们在SQL Server中和MySQL中使用到的SQL语句是不同的。 1、在SQL Server中,我们使用 select top N * from tablename来查询tablename表中前N条记录。 根据所给变量的不同还有其他方法&…

购物网站设计理念有没有免费代理项目

下面我将介绍当需要用C语言开发能访问MySQL数据库的程序时成功配置的关键事项。 操作系统:Windows 7 x64 编程环境:Code::Blocks 10.05(32bit) 配置方式说明:用C语言开发访问MySQL数据库至少有3种配置方式。 方式1:使用MySQL C…

外包做网站的要求怎么写网站cms系统 开源框架

本文实例讲述了Python正则替换字符串函数re.sub用法。分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串然后把它替换成自己想要的字符串的方法re.sub 函数进行以正则表达式为基础的替换工作…

网站建设流程和方法外贸线上推广

一道名为"敲门砖"的面试题: 用面向对象的方法写,点击列表内,子元素的子标签, 来删除子元素 敲门砖考点: 递归(删除标签, 需要找到列表的直属子标签, 需要通过递归层层往上找, parentNode)冒泡(只需为顶级父元素addEventListener绑定事件, 并通过e.target区分子标签, …

做文艺文创产品的网站建设网站公司

特别提醒:注意看本地端和服务器端 一、服务器终端运行 tensorboard --logdirlogs --port6008二、本地终端运行--以建立端口映射 ssh -L 6008:localhost:6008 -p 443 root服务器IP解释:将服务器的6008端口映射到本地的6008端口,-p 443 …

贵阳建站模板设计广告图片

一.人工智能概述 1.AI的基础学科包括:数学(离散、模糊)、思维科学(认知心理、逻辑思维学、形象思维学)和计算机(硬件、软件)等。 2.新一代人工智能呈现出“深度学习、跨界融合、人机协同、群智…

怎么验证网站备案密码是否正确儿童网站开发

连续变化检测和分类 (CCDC) 1 背景 1.1 土地变化监测 土地覆盖变化影响自然和人为环境,被全球气候观测系统视为基本气候变量。例如,荒漠化导致土地覆盖从植物生态系统转变为沙漠,森林砍伐导致森林转变为人类改变的土地用途,城市发展可以将自然环境转变为被建筑物和道路覆…

为什么做网站要用谷歌浏览器盐城市网站

Flink的恢复机制基于应用状态的一致检查点。在有状态的流应用中,一个一致性检查点是:在所有tasks处理了一个(相同的)输入后,当前时间点每个task的state副本。 在为application做一个一致性检查点时,一个基…

推介网站数字火币交易网站开发

最近在做一个iOS IM SDK,在内部试用的阶段,不断有兄弟部门或者合作伙伴过来问各种技术细节,所以统一写一篇文章记录,统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连接方式,协议选择)和常见问题。 …

免费空间的个人网站wordpress 微信接口

当使用模板模板参数时&#xff0c;我们可以将一个模板作为另一个模板的参数&#xff0c;从而实现更大的灵活性和重用性。模板模板参数的主要优势之一是它允许我们编写适用于多种模板类型的通用代码。 下面是一些关于模板模板参数的更多信息 template <template <typenam…

aspcms是网站什么漏洞惠阳区城市建设规划局网站

01 信息学奥赛路线比赛 来源:https://www.noi.cn/ 首先,信息学奥赛是升学最有帮助的一个赛事了,从CSP-J/P开始到NOIP再到最后的NOI,对科技特长生、高考加分都有较大裨益,但相对难度也是最大的。 小学可以参加的是CSP-J比赛,但是和初中生一起考试,不占优势,胜在早入门…

漯河市城市建设投资公司网站wordpress登录空白

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

网站和新媒体建设管理办法深圳全网推广正规专业公司

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…

成都网站设计制作工作室广州正规网站建设哪家好

作者&#xff1a;kw0ng开始通达OA上传到包含漏洞分析的文章已经有很多&#xff0c;本文重点分析&#xff0c;文件上传处决定路径信息是否回显的UPLOAD_MODE参数是怎么传递的。代码分析触发文件上传点位于/ispirit/im/upload.php中&#xff0c;服务端在接收文件信息的同时还需要…

免费网站开发框架wordpress活动召集插件

今年苹果手机发布的新机自发布以来就受到了热烈的追捧&#xff0c;销量一直都处于只增不减的趋势。苹果手机为何如此之火&#xff1f;除了本身自带的IOS系统之外&#xff0c;手机自带很多小技巧&#xff0c;你知道不&#xff1f;今天就来为大家介绍苹果手机中的三种截屏小技巧&…

织梦茶叶网站模板免费下载外贸网站使用攻略

四个问题&#xff1a; 一&#xff0c;Jarvis March算法借鉴了什么算法&#xff1f; 二&#xff0c;如何确定初始点 三&#xff0c;如何获取凸包的边&#xff1f; 四&#xff0c;Jarvis March算法的好处在哪里&#xff1f; 首先看第一个问题&#xff0c; 一&#xff0c;Jarvis …

河北省建设厅网站首页平台网站模板素材图片下载

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f516;系列专栏&#xff1a; C语言、Linux、Cpolar ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前…

做集装箱的网站建应用网站

Spire.PDF for .NET 是一款独立 PDF 控件&#xff0c;用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库&#xff0c;开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理&#xff0c;且无需安装 Adobe Acrobat。 E-iceblue 功能类库Spire 系列文档处…

第三方网站建设平台山东省住房和城乡建设厅政务服务

【SA8295P 源码分析】32 - QNX Ethernet Phy_Switch 驱动初始化 源码分析 一、使用现有的库配置 emac 和 phy_switch功能二、phy_switch 驱动初始化流程分析2.1 emac_mdio_register() 函数分析2.2 emac_mdio_callback() 函数分析系列文章汇总见:《【SA8295P 源码分析 (四)】网…

360网站推广官网怎么优化网站平台开发要注意什么问题

这是我的课程作业&#xff0c;用了 Eigen 库&#xff0c;最后的输出是 latex 的表格的一部分 具体内容就是 梯度下降法 精确线搜索&#xff08;单峰区间搜索 黄金分割&#xff09; 从书本的 Matlab 代码转译过来的其实&#xff0c;所以应该是一看就懂了 这里定义了两个测试…