Windows下的RabbitMQ安装:.Net测试RabbitMQ(工作队列模式)
测试服务器:虚拟机 server 2008R2
代码测试:vs2012+C#
代码引入Rabbit.Client.dll
编写测试代码:
代码大概意思是链接RabbitMQ发送10条消息。
消费端代码:
消费端代码大概意思是链接RabbitMQ处理信息;
其中BasicQos(0,5,false)“公平调度” 表示服务端向消费端每次最多发送5个消息,防止单次发送消息太多,消费端不能及时处理。
当多个消费端同时处理一个队列里的消息,不设置BasicQos(0,5,false) 会导致第一个消费端很繁忙,其余消费端很闲;可以设置成BasicQos(0,1,false) ,每次只发一个消息。
BasicConsume()中第二个参数为“noAck”:是否手动确认,设置为false则启动消息确认机制,BasicAck()为手动确认消息。(没有消息确认机制,服务端发送消息后则会删除这个消息,如果消费端不能正常处理则会导致消息丢失,手动确认则会再代码中处理成功是触发)
如果消费端是web程序,引用程序池回收、重启或者关闭,消费端断开连接。iis默认是20分钟无动作会自动回收进程,会导致消费者断开连接。(可能会导致的结果是半夜消费端空闲iis回收,第二天消费端不能启动)
消费端是winform或控制台程序则进程结束会断开连接,有时进程关闭会有部分线程不能关闭,导致rabbit不能正常的断开连接。(winform使用Environment.Exit(0)结束进程)
ip和端口和发送端不一致是因为我在两台虚拟机上安装了RabbitMQ并且做了集群和镜像。下一篇会介绍做集群的过程。
消费端可以动态的增加和删除,当消息太多当前的消费端不能快速处理时可以动态增加消费端。
工作队列方式参考:https://www.cnblogs.com/wyt007/p/9066216.html
Rabbit相关学习参考:https://www.cnblogs.com/wyt007/category/1218660.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示