成都市金牛区建设和交通局网站手机软件下载大全

news/2025/9/22 21:12:34/文章来源:
成都市金牛区建设和交通局网站,手机软件下载大全,天津网站建设公司,网站开发可选择方案有哪些背景 最近遇到了一个问题#xff0c;在使用rabbitmq的时候出现了丢消息、消息重复消费等一系列的问题#xff0c;使用的是.net框架#xff0c;背景是高并发压力下的mq消费#xff0c;按理说即使队列中堆了几百条消息#xff0c;我客户端可以同处理5个消息。 原因是多线程…背景 最近遇到了一个问题在使用rabbitmq的时候出现了丢消息、消息重复消费等一系列的问题使用的是.net框架背景是高并发压力下的mq消费按理说即使队列中堆了几百条消息我客户端可以同处理5个消息。 原因是多线程同时处理时导致的内存混乱。 官方文档已经解释的很全面了https://www.rabbitmq.com/dotnet-api-guide.html 一个简易的单线程消费者 注意如下代码这只是一个简易的单线程同步的消费者 每次消费1条消息消息消费完进行手动ack Task.Run(() {AutoResetEvent autoResetEvent new AutoResetEvent(false);ConnectionFactory factory new ConnectionFactory();// guest/guest by default, limited to localhost connectionsfactory.UserName user;factory.Password pass;factory.VirtualHost vhost;factory.HostName hostName;// this name will be shared by all connections instantiated by// this factoryfactory.ClientProvidedName app:audit component:event-consumer;IConnection conn factory.CreateConnection();using (IModel channel conn .CreateModel()){channel.ExchangeDeclare(exchangeName, ExchangeType.Direct);channel.QueueDeclare(queueName, false, false, false, null);channel.QueueBind(queueName, exchangeName, routingKey, null);consumer.Received (ch, ea) {var body ea.Body.ToArray();// copy or deserialise the payload// and process the message// ...channel.BasicAck(ea.DeliveryTag, false);};channel.BasicConsume(queue: my-queue,autoAck: false,consumer: consumer);}ConsoleUtil.WriteLine(mq started);autoResetEvent.WaitOne();ConsoleUtil.WriteLine(mq shutdown);} });批量消费 好的那么我现在想要同时消费5条消息想要达到并行的效果需要如何改代码呢看下面的改动 改动1 先看两个概念 prefetchCount预取计数 prefetchCount 是一个用来限制每个消费者一次性从队列中获取的消息数量的参数。当你有多个消费者同时连接到同一个队列时RabbitMQ 可以将消息均匀地分发给这些消费者。通过设置 prefetchCount你可以告诉 RabbitMQ 每个消费者一次最多获取多少条消息。这个参数的目的是确保消息在被消费者处理之前不会全部放到内存中从而提高系统的稳定性和性能。它有助于避免 一个消费者获取了太多消息而导致其他消费者无法获取任何消息的情况。 concurrentConsumers并发消费者 concurrentConsumers 是指在同一队列上允许多少个并发消费者。每个并发消费者都会独立地处理消息这有助于提高系统的处理能力和吞吐量。通过增加 concurrentConsumers 数量你可以增加并发处理消息的能力。注意这个参数不同于 prefetchCount它控制的是同时运行的消费者的数量而不是单个消费者一次性获取的消息数量。 // 参数1prefetchSize:可接收消息的大小,如果设置为0那么表示对消息本身的大小不限制 // 参数2prefetchCount:处理消息最大的数量。相当于消费者能一次接受的队列大小 // 参数3global:是不是针对整个 Connection 的因为一个 Connection 可以有多个 Channel // globalfalse针对的是这个 Channel // globalture 针对的是这个 Connection channel.BasicQos(0, 5, false); factory.ConsumerDispatchConcurrency 5;好的这时候我配置了同时处理5条消息看起来没问题了但是官网文档有这样一句话 IModel instance usage by more than one thread simultaneously should be avoided. Application code should maintain a clear notion of thread ownership for IModel instances. This is a hard requirement for publishers: sharing a channel (an IModel instance) for concurrent publishing will lead to incorrect frame interleaving at the protocol level. Channel instances must not be shared by threads that publish on them. If more than one thread needs to access a particular IModel instances, the application should enforce mutual exclusion. One way of achieving this is for all users of an IModel to lock the instance itself: 大概意思就是应该避免多个线程同时使用IModel实例也就是channel对象如果这么做的后果就是高负载情况下导致内存混乱有可能你的线程1消费到了线程5本该消费的消息这听起来后果是很严重的那么我们应该怎么改动呢官网也给方案了就是给channel对象加锁看下面的代码改动 改动2 consumer.Received (ch, ea) { var body ea.Body.ToArray();// copy or deserialise the payload// and process the message// ...lock (channel){channel.BasicAck(ea.DeliveryTag, false);} };lock (channel){channel.BasicConsume(queue: my-queue,autoAck: false,consumer: consumer); }异步支持 新增一个配置 factory.DispatchConsumersAsync true;然后修改消费者 var consumer new AsyncEventingBasicConsumer(channel);consumer.Received async (model, ea) {await Task.Run(() {var body ea.Body.ToArray();// copy or deserialise the payload// and process the message// ...lock (channel){channel.BasicAck(ea.DeliveryTag, false);}}); };

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

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

相关文章

宁夏网站建设报价毕业设计代写网站

SNAP软件下载与安装 一、下载地址 首先进入网站 找到DOWNLOAD下载页, 安装完成后,界面如下 还需要再装一个Sen2cor下载好之后,解压到用户文件夹下 然后打开L2A_Process.bat文件 打开CMD,输入 cd C:\Users\lenovo\AppData\L…

网站一般怎么维护企业的网站建设费用

字节数组转为二进制数 c#低延迟系统需要高性能的消息处理和传递。 由于在大多数情况下,数据必须通过有线传输或序列化才能保持持久性,因此编码和解码消息已成为处理管道的重要组成部分。 高性能数据编码的最佳结果通常涉及应用程序数据细节的知识。 本文…

做外贸网站市场分析金华 网站建设

Bug(俗称"八阿哥") 是软件开发绕不过的一道坎,因此调试便成了每位程序员一项必备的核心技能。调试不仅有助于理解程序的运行流程,还能改进代码质量,最终提高开发者解决问题的能力以及交付软件的品质。本文旨在讨论 Java 调试关键技…

2345网站入口大数据网络营销

Python 语言的基本语法和编码规范 Python 编程教程教师 : 工作 :Python 语言的基本语法和编码标 准课程描述本章将介绍 Python 语言的基本语法和编码标准,重点介 绍 Python 语言的基本知识,如数据类型、运算符、常量、变量、表 达式和常用语句&#xff0…

上海网站建设-新闻动态金融培训网站源码

引言 曾想过轻松获取亚马逊上的商品图片用于项目或研究吗?是否曾面对网络速度慢或被网站反爬虫机制拦截而无法完成数据采集任务?如果是,那么本文将为您介绍如何用OkHttp和Kotlin构建一个高效的Amazon图片爬虫解决方案。 背景介绍 亚马逊&a…

动力 网站建设广州市网站搭建制作

AI绘画图生图是指通过人工智能技术生成的具有艺术价值的图像。它可以根据用户提供的参考图像或描述,自动生成具有艺术风格的新图像。这些图像可以是风景、人物、抽象画等各种形式。那么ai绘画图生图到底怎么样? AI绘画图生图的优点在于它可以快速、高效地…

网络加速原理

GA的核心原理:不是单纯靠Anycast,而是“Anycast + 智能DNS + 四层代理转发”三位一体 虽然常说“GA使用Anycast”,但更准确地说:✅ GA的本质是:通过智能DNS将用户导向最近的Anycast接入点,再经由阿里云高质量骨干…

无意中在应用层瞥见了一个微内核的操作系统调度器

你好呀,我是歪歪。 最近遇到一个业务上的问题,在网上看到一个对应场景下的解决方案,我感觉这个场景还挺有通用性的,分享一下。 以后遇到类似问题,或者当它以面试场景题出现的时候,你可以拿去就用。事情是这样的。…

数据结构思维题选做(长期更新)

到处乱找的. 用到的数据结构在 NOIP 考纲内,主要是学习、锻炼各种处理思路. 代码的实现都不算困难. 倍增思想 P10198 [USACO24FEB] Infinite Adventure P Hint:跳的步数明显提示倍增. 根据 \(\sum T_i\) 的限制直接预…

龙泉公路建设投资有限公司网站网站到期怎么续费

Prometheus是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做…

网站建设宣传视频教程河北移动端网站制作

1.安装docker服务,配置镜像加速器 2.下载系统镜像(Ubuntu、 centos) 3.基于下载的镜像创建两个容器 (容器名一个为自己名字全拼,一个为首名字字母) 4.容器的启动、 停止及重启操作 5.怎么查看正在运行的容器…

陕西省建设监理协会网站证件查询什么是网络营销产生的技术原因

Swift 可选(Optionals)类型 Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值"。 Swfit语言定义后缀?作为命名类型Optional的简写&…

cdn网站加速如何免费创建自己的小程序

说明 在大量数据处理任务下的缓存与分发 这个算是来自顾同学的助攻1,我有点java绝缘体的体质,碰到和java相关的安装部署总会碰到点奇怪的问题,不过现在已经搞定了。测试也接近了kafka官方标称的性能。考虑到网络、消息的大小等因素&#xff0…

网站建设初稿哪家建站好

初始标记 需要暂停所有的其他线程,但这个阶段会很快完成。它的目的是标记所有的根对象,以及被根对象直接引用的对象,以及年轻代指向老年代的对象,不会遍历对象关系,单线程执行。 并发标记阶段 不需要暂停应用线程&a…

营销型网站建设和规划lnmp下安装wordpress

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …

政治笔记/错题

生产力:是指人们改造自然,使之适应人的需要的物质力量,标志着人类改造自然的实际能力和水平。 生产关系:生产力诸要素相结合的社会形式,指的是人们在物质生产和再生产过程中所形成的经济关系,它是由生产资料所有…

9.22模拟赛总结

赛时 模拟赛 赛时记录: 剩余时间2:33开始打T2 剩余时间1:32开始打完T2 剩余时间1:00结束T2 剩余时间0:30T4有思路,开始打 时间到了放弃T4 赛时状态: T1怎么看起来好复杂,完全没有顺序和思路 T2回文串,每个位置…

莫队 n的序列,多次查询一段区间内的数字的个数

莫队 n的序列,多次查询一段区间内的数字的个数 // 普通莫队 O(n*sqrt(n)) include include include include using namespace std; const int N=50005; int n,m,k,B,a[N]; int sum,c[N],ans[N]; struct Q{ int l,…

巴州建设局网站网站建设与app开发

任务一:挖掘反射型XSS漏洞(以弹窗test13)证明 任务二:复现环境中的CSRF漏洞,设计表单,当管理员点击URL后自动将自己密码重置为:123456 任务三:复现环境中的JSON Hijacking漏洞&#…

免费发布推广的网站wordpress页面几层

https://support.huawei.com/enterprise/zh/doc/EDOC1100325140/f6eeacd6 打开链接,里面的内容很详细。