为什么在Topshelf的Job不能做RabbitMQ消费者监听!

RabbitMQ异常监控及动态控制队列消费的解决方案 最近,随着系统的上线,在RabbitMQ的使用上遇到了一些问题,现将其分析总结及对应的解决方法分享出来,以便大家借鉴参考。如有不对的地方欢迎指正交流。 1.遇到的问题 (1)某个消费者线程因内存溢出而挂掉,造成对应的队列没有消费者,消息在MQ Server堆积,而系统缺少对该类异常的监控,无法及时有效的进行处理。 (2)在一些业务场景,消息的消费速度远低于生产速度,造成大量消息堆积在MQ... 阅读详情

无法手动应答模式,因为RabbitMQ已提前关闭! 

try
            {
                string queueName = "UnOpenMyCodeQueue";
                string exchange = "UnOpenMyCodeExchange";
                using (var con = this._rabbit.CreateConnection())
                {
                    using (var channel = con.CreateModel())
                    {
                        channel.ExchangeDeclare(exchange, "direct", durable: true, autoDelete: false, arguments: null);
                        channel.QueueDeclare(queue: queueName,
                                             durable: true,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);

                        channel.QueueBind(queue: queueName,
                                  exchange: exchange,
                                  routingKey: queueName);

                        //输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息
                        channel.BasicQos(0,1,false);

                        var consumer = new EventingBasicConsumer(channel);

                        consumer.Received += (model, ea) =>
                        {                            
                            try {
                                var body = ea.Body;
                                var message = Encoding.UTF8.GetString(body);
                                Do(message);//业务逻辑处理
                                this._logger.LogInformation("GetOhterBizConsumeData got msg:" + message);
                            }
                            catch (Exception exp)
                            {
                                this._logger.LogError("GetOhterBizConsumeDatae接受消息异常:"+exp.Message+exp.StackTrace);
                            }
                            finally {
                                channel.BasicAck(ea.DeliveryTag, false);
                                this._logger.LogInformation("channel.BasicAck is done");
                            }
                        };

                        

                        bool autoAck = false;
                        channel.BasicConsume(queue: queueName,
                                             noAck: autoAck,
                                             consumer: consumer);

                    }
                }
            }
            catch (Exception e)
            {
                this._logger.LogInformation("GetConsumeData异常" + e.Message + e.StackTrace);
            }

大型ASP.NET系统架构演进:从单体到微服务的实战路径 在软件工程中,架构演进是应对业务增长与技术债务的核心命题。当ASP.NET应用面临高并发、模块耦合、部署低效等典型瓶颈时,单纯性能优化已失效,必须启动结构性升级。其本质是围绕可维护性、可扩展性与团队协同能力,对分层设计、服务拆分、数据访问、缓存策略与异步通信等关键维度进行系统性重构。实践中,单体并非原罪,而是合理起点;分层架构提供可控过渡;微服务适用于组织与规模双驱动的成熟阶段;而混合架构则成为多数政企级ASP.NET系统的现实选择。本文聚焦金融、政务、电商等真实场景下的架构决策逻辑、技术选型成本测算及落地 阅读详情

相关推荐

Java网页访问报错?手把手教你解决JRE插件缺失和浏览器拦截问题(附详细截图)

本文针对Java网页访问时常见的JRE插件缺失和浏览器拦截问题,提供了详细的诊断与解决方案。文章首先解释了问题根源在于现代浏览器出于安全考虑停止了对Java插件的支持,然后手把手指导用户确认Java安装、在控制面板配置安全站点列表,并针对Chrome、Edge、Firefox等主流浏览器的不同拦截机制给出了具体的应对策略,最后提供了系统性的故障排查清单,帮助用户彻底解决访问障碍。

weixin_29233857的博客 220

rabbitmq无法监听无法消费的问题记录和处理(随笔)

rabbitmq无法监听无法消费的问题记录和处理部署情况问题情况问题排查出现阻塞的原因排查解决办法 部署情况 微服务部署3个节点的消费者,mq集群的 问题情况 生产者发送的消息,消费者那边没有任何反应和日志。 问题排查 打开mq的ui控制界面。发现对应的队列有1159个消息没有消费。 此队列情况是 未消费 409 消费中:750 总共:1159 这时候查看消费者连接情况是 三个微服务都有连接消费, 消费中的数量都是250 达到了对应的阻塞上限(可以配置) 所以后续的新过来的消息阻塞中国年,就不会推送的此三

dongchenghe的博客 3829

WAVE格式

一.wave格式概述 Wave文件格式是用于多媒体文件存储的Microsoft RIFF(Resource Interchange FileFormat)的一个子集。每一个RIFF文件以一个文件头开始,后面是一系列数据块。Wave文件通常是包含“WAVE”块的RIFF文件。而该“WAVE”块由两个子块组成,称为“fmt”块。“fmt”块用于确定数据格式,并且“data”块包含实际的样本数据,

yejia1280的博客 4389

spring与RabbitMQ整合 消费者消费不到消息 重启才能消费到的问题解决

RabbitMQ是当前一个挺火的消息队列中间件 相比ActiveMQ 消息更不容易丢失我之前用的是ActiveMQ 后边有的时候会莫名其妙的收不到消息 项目紧后边也没时间排查 经朋友的推荐下 换了RabbitMQ 后边用着也没啥问题今天 的RabbitMQ 突然就出了问题 生产者发送消息 消费者监听不到 消费者重启才能接收到 这样的情况肯定不行 项目上线的话要是出现这种问题影响很大的 进入Ra

huaihkiss的博客 1万+

中国30米分辨率城市建成区数据集 (1972-2023年)

全国城市建成区空间分布数据(1972-2023年),利用Google Earth Engine平台,基于Landsat系列遥感影像提取了1972–2023年城市不透水面,后经过不透水面聚集密度计算方法计算了不透水面聚集密度,通过阈值划分提取了城市建成区,并设置了建成区面积阈值,去除了噪点,获取了全国城市建成区空间分布数据集。该提取能准确刻画城市形态,提取精度高,保持了建成区的完整性。数据集包括41期数据,1972年,1978年,1985-2023年逐年,分辨率为30米,有栅格和矢量两种格式。

地球资源数据云的官方博客 5824

2019年7月28日解决战网BLZBNTBNA00000005BLZBNTBNA00000006BLZBNTBTS0000005DBLZBNTBTS0000004A 007D0 008A4 00840

Blizzard—Battle.net—2019年7月28解决战网BLZBNTBNA00000005BLZBNTBNA00000006BLZBNTBTS0000005DBLZBNTBTS0000004A 007D0 008A4 008402019年7月28日再次更新写在前面■■■ 排查网路问题 ■■■■■■ 排查电脑自身问题 ■■■■尝试重置internet设置■网络的设置和防火墙规则■如果还是不...

MCGC高质人类协作会-MCG贴吧 3万+

spring rabbitmq: 指定消费者ip开启监听 和 消息失败重试

**这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用M

kaomianjin的博客 2369

【高级】系统架构师 | 2026年上半年案例分析真题

标准答案:系统因缺乏足够历史数据(用户行为、物品信息或评分等),难以做出准确推荐的问题。另外两种:物品冷启动(新课程 / 新知识点缺少互动数据)系统冷启动(平台上线初期整体数据稀缺)类型典型表现常见缓解用户冷启动新注册学员无历史问卷/前测、热门兜底、人口统计学特征、知识图谱前置测评物品冷启动新课无人学无人评内容特征推荐、专家标注、探索流量系统冷启动新平台双边都稀缺规则引擎、运营冷启、知识图谱强约束路径本题已点明「用户冷启动」,另外两种按推荐系统经典三分法作答即可。

大胆尝试,小心实践 358

springboot项目 rabbitMq 自定义监听类/消费者开启或关闭

1.找到监听类 代码: @RabbitListener(queues = "suggest_complaint_wechat",autoStartup= "false",id = "1111") 2.在测试类中 代码: @Autowired private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry; ...

weixin_43550533的博客 1万+

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

手把手教你学Simulink--控制策略与算法的DC-DC变换器领域仿真领域建模实例:基于Simulink实现一个双闭环控制Buck变换器的仿真建模

目录主要步骤1. 前期准备2. 构建Buck变换器模型3. 定义双闭环控制器4. 设置参考电压和反馈回路5. 实现双闭环控制器逻辑6. 仿真参数设置7. 运行仿真与结果分析示例整合代码片段1. Simulink模型2. 双闭环控制器参数调节3. 仿真结果分析总结双闭环控制是一种常见的控制策略,广泛应用于电力电子系统(如DC-DC变换器)中。它通过内外两个环路的协同工作,分别控制系统的动态性能和稳态性能。对于Buck变换器,通常采用电流内环和电压外环的双闭环控制结构。以下是一个手把手教程,帮助你基于Simul

MHD0815的博客 325

Rabbtimq无法监听消息

事情是这样的,我先打开了idea (程序端口7503) 然后 idea卡机我直接 打开任务管理器关闭了idea ,我继续启动7503端口 ,结果端口被占用 ,我就换成了7504, 但是造成 7504的 程序监听不到 rabbitmq 的消息。解决: 经过排查 我启动cmd黑窗口关闭了 7503端口的程序 ,启动7504, 消息队列能正常监听。...

weixin_45699541的博客 1763

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2806

RabbitMQ常见问题解决方案

上一篇博客记录了一下RabbitMQ的服务搭建和简单入门,但是光这些还远远不够。 要想将RabbitMQ用于生产中,需要考虑和解决很多问题。 目录 消息转换器 生产者如何确保消息发送不丢失? 消费者如何防止消息丢失? 消息预取 死信交换机 消息转换器 原生的RabbitMQ只能发送字节数组,与SpringBoot整合后,Spring允许开发者发送一个对象,原因在于Spring对消息的发送和接收进行了一些处理。 默认的消息转换器为:SimpleMessageConverter,转换大

drnrrwfs的博客 2631

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)——所有webapi似乎都缺失的一个功能...

最近的工作我在做一个有关于消息发送和接受封装工作。大概流程是这样的,消息中间件是采用rabbitmq,为了保证消息的绝对无丢失,我们需要在发送和接受前对消息进行DB落地。在发送前我会先进行DB的插入,单表插入,所以在性能上也是能接受的,单表插入做了压测基本上是一到两毫秒的时间,加上消息的发送(有ACK)再加上集群是两个节点的高可用(一个磁盘持久化节点),单台TPS基本上是在2000-30...

dengzai7446的博客 290

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

使用Topshelf 开发windows服务

  在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发。如果用windows service开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 windows service 相关的一些开发和安装部署,所以,windows service非常的不方便。Topshelf框架,能够让你将 console application 直接封装为 w...

weixin_34190136的博客 185

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

在 WebApi 项目中快速开始使用 RabbitMQ

RabbitMQ 是 VMware 一个非常强大的开源消息代理软件,通常用于处理背景任务,延迟消息和长时间运行的任务.它支持多种消息队列协议(AMQP,MQTT,STOMP 等),可以在分布式和联网环境中使用,提供了高可用性和可靠性.至于其他的一些优点也不必多说,这也不是我的风格.我喜欢的就是好用,稳,简单.????其他的更多的内容这里不再多说,以及 RabbitMQ 的 7 种工作模式.可以参考工良大...

farway000的博客 496

.NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

Tip: 此篇已加入.NET Core微服务基础系列文章索引 一、消息队列与RabbitMQ 1.1 消息队列   “消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器。   消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以...

weixin_34018169的博客 1101

手写快速Web开发框架--集成RabbitMQ

#最近难得有空,然后试着集成了下RabbitMQ ###完整代码在这里 https://github.com/zhangjunapk/WinterBatis 先看下效果,访问这个路径能发送消息,然后消费者能消费消息       ##首先定义注解 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) publi...

u011546032的博客 501

Rabbitmq消费者接收不到发送到队列的消息

rabbitmq消费者消费时,Message Rates 显示有消息进入,但是Queued Message 没有显示对象进入 首先,我主观判断是发送到该队列的消息遗失了。 Queued Messages: 正在排队等待消费的消息 Ready:待消费的消息总数。 Unacked:待应答的消息总数。 Total:总数 Ready+Unacked MessageRates : p...

m0_37924505的博客 1万+

RabbitMQ通信

RabbitMQ的通信: rabbitMQ在于核心产品之间进行通信几乎采用的都是RPC模式(远程过程调用),我们使用的大多数的基于WebApi调用就是一种常见的RPC模式,不过不同是的,我们在通常使用WebApi远程调用时,服务器并不会给客户端发出命令,而AMQP规范中,客户端与服务器之前都可以发出命令。 rabbitMQ的会话启动:协议头,这个不是请求也不是命令。客户端发出协议头后,服务...

u011660398的博客 537

TopShelf托管服务

refs: http://www.harishrathi.com/selfhosting-webapi2-with-owin/ https://social.msdn.microsoft.com/Forums/sqlserver/en-US/31d57870-1faa-4e14-8527-ce77b1ff40e4/local-service-local-system-or-network-se

Henry_Wu001的专栏 1255

Topshelf安装失败

在使用Topshelf安装时失败 命令如:**.exe install 失败提示信息:The ** service can only be installed as an administrator 解决方案:右击**.exe文件,属性-》兼容性-》勾选以管理员身份运行

开享 5363

Topshelf 打包部署Windows服务

1 创建项目(例:控制台程序) Nuget 引入Topshelf类库 using System; using System.Threading; using System.Threading.Tasks; using Topshelf; namespace LoginTypeInherit { public class Program { private stat...

沐恩 5540
上一篇: 如何找回丢失的Git提交内容!
下一篇: 如何让多个库种的EF共存?
安欧碰麦蔻德
博客等级 码龄19年 17粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值