防止消息丢失
从设计角度来看,主要仍是平衡性能与可靠性之间的平衡。
严格防止消息丢失,可以通过很多方式。包括高可用、负载限流broker。并且通过使用死信队列、消息重投、开启持久化、记录日志、接收确认(消费方确认、生产方发送broker的broker异步确认)。进行防止消息丢失。
当然越复杂性能越低。
设计思路仍是从producer、broker、customer三方之间去考虑,各自负责好各自的“事情”避免消息丢失。
防止重复消费
消息幂等处理。
jdk8 putIfAbsent,guava cache(有超时机制)