考虑您的生产者为系统用户创建消息,并且它们的顺序在用户级别中很重要。
我的生产者,添加消息到主题有两个分区,我正在使用散列对user_id
将每个用户的所有消息放在同一个分区,以保证订单。
如何在保持消息顺序的同时扩展系统并为主题添加更多分区?
Kafka如何处理分区前已经生成的消息?消费但未提交回Kafka以更新偏移的消息会发生什么?
1.在消费者客户端使用树集(有序集)缓存消息,保持1分钟(或更短); kafka只保证一个分区的顺序,我认为生产者也不能保证订单。
2.如果您未手动提交偏移量,则在下一次提取请求中,将获得相同的消息。无论如何,在消费者客户端,你应该确保消息的幂等性,即使你有安排的偏移量。