首先,我们知道kafka的整个架构中,用到了partaion的分区机制,即一个topic会有多个分区,从而来实现消息的物理存储;
而生产者在发送消息的时候会跟据消息的key来进行取模来决定把当前的消息存储到那个分区中,而且消息是按照先后顺序存储到对应的partion中的
因为是多个分区,消费的时候通过一个balance机制去消费对应的分区中的消息,那么消息的消费顺序就不一定是按照消息的发送顺序来消费的;
对应的解决办法就是我们可以自定义消息生产的路由算法,让指定的key都路由到同一个分区,并且我们在我们消息消费的时候也可以
指定消费者去消费某一个分区里的数据,这样就可以保证消息的顺序消费;