消息队列(Message Queue),是分布式系统中重要的组件。
消息队列(mq)当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。
消息队列主要解决了应用耦合、异步处理、流量削锋等问题。
当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。

使用场景:
- 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;
- 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;
- 限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况;
- 消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理;
消息队列的延时队列实现原理及消息可靠性保证:
参考:https://blog.csdn.net/m0_46690280/article/details/118367622
可以通过TTL(Time to Live)以及死信路由来实现消息延迟
没有任何处理,消息会被丢弃,如果配置有死信队列,超时的消息会被投递到死信队列
RabbitMQ:

RabbitMQ消息可靠性保障:
- 生产者发送消息到broker时,通过发送方确认和失败通知确保可靠性
- 消费方手动确认消息可靠性
kafka入门参考:https://zhuanlan.zhihu.com/p/74063251
Kafka 是一种分布式的,基于发布 / 订阅的消息系统。
Kafka一个很重要的特性就是,只需写入一次消息,可以支持任意多的应用读取这个消息。
Kafka 来说客户端有两种基本类型:生产者(Producer)和消费者(Consumer);其它概念:主题(Topic)与分区(Partition),Broker 和集群(Cluster)
