我们有消息层的要求,我们希望消息的顺序被保留,直到它被消费者消费。我们也在探索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
选择?
同样在高级消费者中,我们能控制它将从哪个分区消费吗?如何将分区分配给使用者?
1条答案
按热度按时间js5cn81o1#
kafka只提供分区内消息的总顺序,而不是主题中不同分区之间的顺序。
如果主题是单分区的,那么顺序是有保证的。如果你的消费者表现良好,你不必担心。
假设您至少有kafka 0.9,那么在代理处注册时,每个使用者都会被分配一个分区。如果一个主题有两个分区和两个使用者,那么每个主题将被分配一个分区。此信息存储在
ConsumerPartitionOwnershipInfo
详见设计文件。主题中的每个分区只分配给使用者组中的一个成员。这里很好地解释了0.9中的消费者行为和变化。