https://www.cnblogs.com/williamjie/p/9116342.html
ActiveMQ,RabbitMQ,RocketMQ,Kafka
1.有mq原因是什么,mq是做什么的
https://www.zhihu.com/question/54152397
a.代码解耦
b.异步
c.削峰/限流
2.消息队列都有那些
Kafka、ActiveMQ、RabbitMQ、RocketMQ
3.消息队列的高可用,重复消费、消息丢失、消息顺序、分布式事务
https://zhuanlan.zhihu.com/p/93512474
重复消费处理:接口幂等(这边比如一个处理是有单一的流水号的,所以根据这唯一的流水号可以判别消息是否是重复消费,再做相应处理)
消息丢失:
a.生产阶段:使用自动ack或者手动ack保证数据不会丢失
b.存储阶段:
https://blog.csdn.net/weixin_40885642/article/details/105666758?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control
c.消费阶段:根据业务情况看消费者这端消息是否允许丢失,如果不允许丢失
在这个阶段我们需要注意的一定要当消费者处理完你自身业务逻辑后给Broker发送消费确认。否则当你收到消息就给Broker确认消费,此时Broker认为消费者消费成功,将消息从Broker队列中移除,当本地逻辑处理异常时就很有可能丢掉这个消息。
4.消息队列Kafka运用
5.消息队列ActiveMQ运用
6.消息队列RabbitMQ运用
7.消息队列RocketMQ运用