消息中间件的定义
- 以消息作为信息载体实现系统间的可靠异步的调用,减少系统间耦合的中间层框架
消息中间件的好处
- 各项服务解藕,服务间透明调用
- 通过异步的方式提高业务处理效率,性能只取决于消息中间件的性能
- 消息的可靠性与一致性统一由消息中间件来保证
消息传输模型
队列模式
- 队列模式指的是通过队列存放消息,消息只能由一个服务进行消费,无法满足多个服务消费同一条消息的场景
订阅模式
- 根据业务主题的不同,允许多个服务处理同一条消息
- 订阅根据订阅方式的不同可以分三类:直接订阅(Topic + MessageType); 正则订阅(Topic + MessageType 正则); 广播订阅(Topic + all MessageType)
消息处理过程
普通消息的处理
- producer 发送消息给消息中间件
- 中间件做好存储并返回成功,producer 可以做其他事情
- 中间件根据消息的 Topic 和 MessageType 查询订阅关系分组并下发消息给 consumer
- consumer 根据结果超时重发、成功记录来保证失败重投或不再投递
事务消息的处理
- producer 发送消息给消息中间件,同时在执行本地的业务
- 中间件做好存储并返回成功
- 中间件在询问 producer 本地业务执行成功时发消息给 consumer,否则进行回退操作,来保证 producer 与 consumer 的执行的一致性
- consumer 根据结果超时重发、成功记录来保证失败重投或不再投递
需要改造的业务系统