Windows下的RabbitMQ安装:.Net测试RabbitMQ(工作队列模式)

本文详细介绍了在虚拟机server2008R2环境下,使用vs2012和C#进行RabbitMQ消息队列的测试过程。通过设置BasicQos参数实现消息公平调度,防止消费端过载。探讨了消费端在不同情况下如何处理消息,包括web程序的IIS回收问题和winform程序的正确退出策略。此外,还提到了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

 

转载于:https://www.cnblogs.com/zeran/p/10773368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值