消息中间件面对的两个主要问题
分布式消息系统作为实现分布式系统可扩展,可伸缩性的关键组件,需要具有高吞吐量,高可用性等特点,谈到消息系统的设计,就回避不了两个问题:
消息的顺序问题
消息的重复问题
消息的顺序问题解决:
如果M1被发送到消费端后。消费端1没有响应,那是继续发送M2?为了保证保证消息一定会被消费,肯定是选择重发M1到另外一个消费端2,那么如果M1已经被消费过,如何避免消息被重复消费
消息的重复消费问题
1、消费端处理消息的业务逻辑保持幂等性
2、保证每条消息都有唯一的编码,且保证消息处理成功 与 去重表的日志 同时出现
利用一张日志表来记录已经处理成功的消息的ID,如果新到达的消息ID已经在日志表中,那么就不再处理这条消息