MQ
mq是一个消息中间件,
优点可以实现为服务器之间的异步通信,模块之间的解耦合,还有通过消息队列削峰填谷
缺点是系统的可用性降低了,复杂度提高了,需要考虑一致性问题.
RocketMQ
优点:性能好,高吞吐量,稳定可靠,有活跃的中文社区
缺点:兼容性上不是太好,支持的客户端语言不多,目前是 Java 及 c++,其中 c++ 不成熟
RabbitMQ
优点:轻量,迅捷,容易部署和使用,拥有灵活的路由配置
缺点:性能和吞吐量不太理想,不易进行二次开发
RabbitMQ
工作模式有五种
Helloworld(简单模式):一个生产者,一个消费者
work queues(工作队列模式):一个生产者,多个消费者
fanout(发布订阅模式):一个生产者,一个交换机,多个消费者,交换机把生产者提交过来的消息转发给消费者
direct(路由模式):生产者把消息交给交换机,交换机根据路由key把消息路由给对应路由key的队列上
topic(通配符模式):生产者把消息交给交换机,交换机根据通配符路由key把消息路由给对应路由key的队列上
延迟队列
MQ中一个非常重要的问题就是如何防止消息丢失
在生产者丢失——confirm确认模式
使用RabbitMQ事务机制,但它是同步的,很消耗性能
开启confirm确认模式,确认消息是否从“生产者”发送到“交换机”,