RocketMQ是阿里出品的消息中间件,于2017年贡献给apache基金会成为顶级项目。因为经过高并发考验,所以我们选择他
说在前面的话
为什么要用MQ
1. 异步解耦:使用发布订阅模式,可以使两个系统之间不直接交互,达到异步解耦的目的
2. 削峰填谷:使用消息中间件,消息发布者发送消息的性能不依赖于下游系统,如果下游系统处理缓慢,可以让消息临时存储在消息中间件系统,达到均衡流量的效果
3. 数据分发:如果多个系统需要同一类型的数据,使用消费订阅模式可以方便解决数据分发的问题
- 引入MQ有一些问题
- 依赖更多的系统,导致系统稳定性降低
- 使系统之间调用关系更加复杂
- 一致性问题
RocketMQ介绍
一、消息发送
1. 同步消息,发送消息时同步接收结果,用于低延迟的重要数据
2. 异步消息,用户高延迟数据
3. 单项消息,对于大量非重要数据
二、顺序消息
由三个阶段保证:消息发送,消息存储,消息消费
1. 全局顺序,对于一个topic按照顺序消费
2. 分区顺序,对消费者进行分区,一个区域内按顺序消费
三、广播消息
1. 集群模式,每条消息只能被同一个应用的其中一个实例消费
2. 广播模式,所有实例都需要消费。广播模式不支持事务,实例重启期间发送到实例的消息将丢失
四、延迟消息
过一段时间才会消费,实现思想:将消息临时存放,到达时间点才会放到目标topic
不支持任意时间的延迟,需要提前定义
五、批量发送
支持批量发送,但是有一定限制
1. 同一个topic
2. 不支持延迟发送
3. 一批消息不能大于1M
4. waitStoreMsgOK相同(不知道是啥东西)
六、消息过滤
。。。