问题:
- 为什么使用消息队列
- 消息队列有什么优点和缺点
- kafka,activeMq,rabbitmq,rocketMq都有什么区别,以及适合那些场景
优点:结偶,并发削峰,异步
缺点:可用性降低,系统复杂性变高,
重复消费:系统发了两条,两条都插入了数据库
消息丢失:系统根本没法请求到目标系统
一致性问题:系统要再ABC三个系统都执行成功之后才返回成功,结果AB成功了,C失败了
mq的6种工作模式:
- 简单模式:一个生产者,一个消费者
- work模式:一个生产者,多个消费者,每个消费者获取到的消息唯一。
- 订阅模式:一个生产者发送的消息会被多个消费者获取。
- 路由模式:发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key
- topic模式:将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。
4个mq的优缺点对比:
rabbitMq : 开源项目,社区活跃,中小型工时使用
rocketMq :大型公司,基础研发能力抢,使用rocketMq
kafka : 大数据领域实时计算,日志采集,用kafka是业内标准