RabbitMQ 是一种消息中间件,在程序中起到了解耦的作用,接触模块与模块或者项目之间的依赖,是程序开发更加有弹性
MQ中一般分为消息提供者,消费者,和中间件三个角色
消息提供者:消息的生产者,把消息发送到 MQ 中
MQ:负责接收提供者的消息,同时缓存消息,同时给消费者消费消息提供支持
消息消费者:负责接收或者拉去MQ上缓存的消息
MQ 的选择:
不同的 MQ 有自身的优缺点,我们来谈谈不同的MQ之间的选择
1. 从社区活跃度
按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首选
2. 持久化消息比较
ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消息不会丢失的机制
3. 综合技术实现
可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等。
RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。当然ZeroMq 也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性
4. 高并发
毋庸置疑,RabbitMQ 最高,原因是它的实现语言是天生具备高并发高可用的erlang 语言
5. 比较关注的比较, RabbitMQ 和 Kafka
RabbitMq 比Kafka 成熟,在可用性上,稳定性上,可靠性上, RabbitMq 胜于 Kafka (理论上)
|
|