作者回复: 首先,kafka 3副本在ack1时,极端情况里也是有可能会丢消息的,真不能丢的建议ack all。其次,我建议你还是默认认为消息是乱序的会重复的,虽然程序写起来要考虑的东西会多不少,但这样才够健壮。关于重复的问题,一般消息体里的内容总是会有什么业务ID的,让业务逻辑来做幂等性控制,这个不要强行放在MQ客户端想一劳永逸。
作者回复: 如果我说消息也可以看成一种事件,你是不是就不会困惑了。我见过有自己给自己发个MQ消息的,也有很多人这么用。