如何在Kafka中保持信息的有序性?

xytpbqjk  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(452)

我们有消息层的要求,我们希望消息的顺序被保留,直到它被消费者消费。我们也在探索Kafka。我知道Kafka不保证分区之间的顺序,但在分区内它保持顺序。
我在想,我们是否可以确保特定的生产者(具有特定的键值属性)在主题t1的特定分区p1中发布其消息,以及我们是否可以确保使用者从相同的分区p1获取消息。。这将符合我们的目的。
kafka-console-producer.sh 救命,我看到下面:

--producer-property <producer_prop>      A mechanism to pass user-defined
                                           properties in the form key=value to
                                           the producer.
--producer.config <config file>          Producer config properties file. Note
                                           that [producer-property] takes
                                           precedence over this config.
--property <prop>                        A mechanism to pass user-defined
                                           properties in the form key=value to
                                           the message reader. This allows
                                           custom configuration for a user-
                                           defined message reader.

我们能用这个来控制生产者将要写入的分区吗 --property 选择?
同样在高级消费者中,我们能控制它将从哪个分区消费吗?如何将分区分配给使用者?

js5cn81o

js5cn81o1#

kafka只提供分区内消息的总顺序,而不是主题中不同分区之间的顺序。
如果主题是单分区的,那么顺序是有保证的。如果你的消费者表现良好,你不必担心。
假设您至少有kafka 0.9,那么在代理处注册时,每个使用者都会被分配一个分区。如果一个主题有两个分区和两个使用者,那么每个主题将被分配一个分区。此信息存储在 ConsumerPartitionOwnershipInfo 详见设计文件。主题中的每个分区只分配给使用者组中的一个成员。
这里很好地解释了0.9中的消费者行为和变化。

相关问题