目前业界使用较多的消息队列组件有RabbitMQ、ActiveMQ、MSMQ、kafka、zeroMQ等
之间的对比可以看这里
之前搭过ActiveMQ环境带源码 点击这里
后来发现RabbitMQ性能比较好,决定这个项目中用到。
关于RabbitMQ的详细描述和安装可以看张善友老师的这篇文章 在 Windows 上安装Rabbit MQ 指南
最简单的方式是使RabbitMQ以Windows Service的方式在后台运行,所以我们需要以管理员权限打开cmd,然后切换到sbin目录下,执行这三条命令即可:
rabbitmq-service install rabbitmq-service enable rabbitmq-service start
激活Rabbit MQ's Management Plugin
使用Rabbit MQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态,你可以在命令行中使用下面的命令激活:
rabbitmq-plugins.bat enable rabbitmq_management
要重启服务才能生效,可以执行
net stop RabbitMQ && net start RabbitMQ
使用浏览器打开http://localhost:15672
访问RabbitMQ的管理控制台。
看到这个登录界面那就说明插件安装成了。
如果在外部访问没有看到这页面检查下防火墙。
默认账号密码都是guest
搭建环境安装服务都很顺利。
下面主要总结下使用RabbitMQ 遇到的问题:
封装RabbitMQ.NET Library 的一点经验总结 这篇文章已经总结了很多经验了。
7.设置一次只接受一个消息,而不是直接LOCK住所有的队列消息
默认情况下,一个队列里不管多少消息当你一个TCP连接打上去之后会LOCK住所有的消息,也就是说一个连接彻底占用了所有的消息,此时消息不会被其他集群的机器消费。
10.消费失败的消息要重新放入队列
再补充几点:
在项目中是添加队列表后在去直接添加到MQ,这个时候如果添加MQ的时候如果MQ挂了,这部分数据怎么重新推到MQ?
看这篇文章可以得到点思路 WebAPi的可视化输出模式(RabbitMQ、消息补偿相关)——所有webapi似乎都缺失的一个功能
可以通过一个服务去定时跑队列,可以在队列表添加三列,发送成功、接受成功、处理成功,查询状态时一目了然。
参考: