RabbitMQ是什么?
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
PS:也可能直接问什么是消息队列?消息队列就是一个使用队列来通信的组件
消息队列有什么优缺点
优点:
- 异步处理
- 服务解耦
- 流量控制(削峰)
缺点:
- 系统可用性降低 系统引入的外部依赖越多,越容易挂掉。
- 系统复杂度提高
- 顺序性问题
- 一致性问题
如何保证消息的可靠性?
消息到MQ的过程中搞丢,MQ自己搞丢,MQ到消费过程中搞丢。
- 生产者到RabbitMQ: 事务机制和Confirm机制,注意:事务机制和 Confirm 机制是互斥的,两者不能共存,会导致 RabbitMQ 报错。
- RabbitMQ自身: 持久化、集群、普通模式、镜像模式。
- RabbitMQ到消费者: basicAck机制、死信队列、消息补偿机制。
评论区