你要控制consumer如何提交offset了,如果你业务很多问题,消费者写的不好,你还要面临重复消费或漏消息的问题。
那就是说,即使只有1个partition,但如果发生rebalance的话,在新旧两个consumer之间,仍然可能出现消息乱序咯?
你的问题一开始就说明了在特定的分区上,我理解的是你已经做了分区指定规则,而不是因为有了新的就发到新的。
有了新的分区,也必须是通过自己的规则,将特定的一类消息放到该分区上,才行。
kafka的乱序是consumer造成的,parition先进先出顺序保证,但是消费者的能力不一,有的处理的快,有的处理的慢,必定会乱,所以kafka推荐如果需要强一致,就只能有1个分区。而你通过规则设置不同的key,消费分到“特定的分区”,和kafka的1个分区效果是一样的。
1、key可能发送到另外一个partition,这个你的规则一开始就要确定的,即使有新增的partition,也不应把消息发到新的分区上。
2、kafka当然无法保证旧的consumer把拿到的消息全部commit了,因为consumer重新选举触发了,说明旧的consumer已经失联了。