MQ
1.为什么使用消息队列
发布订阅模型 ,应用解耦
销峰
异步
2 有点和缺点
3各种消息队列的区别
4如何保证消息队列的高可用
rabbitmq 镜像集群模式
kafka zookepper分布式,选举,备份
5如何保证消息不被重复消费,如何保证消息幂等
唯一主键,不唯一就失败
保存到set或redis中,插入的时候 判断
6如何保证消息的可靠性传输,丢失了怎么办
rabbitMQ
生产者发送消息, 事物, 发送之前开启事务,没有成功接收到消息,收到异常报错,回滚事物,重新发送,收到的话就提交事务
消耗性能,降低吞吐量
开启confirm模式,分配唯一ID,如果写入成功,会回传一个ack信息,如果没能收到,会回调一个nack接口,重试
MQ接收到消息,保存到内存里,如果消费者还没来得及消费,这是挂掉了,就会导致消息丢失。 写入磁盘,持久化
消费者消费了这个消息,但是还没来得及处理就挂了,rabbitmq以后处理完了, 关闭autoAck,自己手工处理,处理完成后人工ack通知mq
7如何保证消息的顺序性
8如何解决消息的延时以及过期失效问题?消息队列满了怎么处理?有几百万消息积压几小时,怎么解决