如何使用主题的特定分区(例如,使用分区键13) 有一面旗子叫 --partition 在 kafka-console-consumer ``` --partition <Integer: partition> The partition to consume from. Consumption starts from the end of the partition unless '--offset' is specified.
命令如下:
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 0 --from-beginning
4条答案
按热度按时间hzbexzde1#
你不能使用控制台消费者和生产者。但是您可以使用更高级别的客户机(使用任何适合您的语言)。
例如,您可以使用
assign
方法手动分配要使用的特定主题分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/kafkaconsumer.java#l906)您可以使用自定义
Partitioner
重写分区逻辑,在这里您将手动决定如何对消息进行分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/producerconfig.java#l206-l208年)rta7y2nd2#
对于许多可用的客户机,您可以像serejja所说的那样指定分区号。
也要调查https://github.com/cakesolutions/scala-kafka-client 它使用actor并为手动分区和偏移提供多种模式。
如果你想在终端上做同样的事情,我建议使用Kafka卡特(https://github.com/edenhill/kafkacat)我在发展过程中的个人选择。
你可以这样做
kafkacat -b localhost:9092 -f 'Topic %t[%p], offset::: %o, data: %s key: %k\n' -t testtopic
对于一个特定的分区,您只需要使用-p
旗帜。n9vozmp43#
如何使用主题的特定分区(例如,使用分区键13)
有一面旗子叫
--partition
在kafka-console-consumer
```--partition <Integer: partition> The partition to consume from.
Consumption starts from the end of
the partition unless '--offset' is
specified.
bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic test --partition 0 --from-beginning
jexiocij4#
控制台生产者和消费者不提供这种灵活性。您可以通过kafkaapi实现这一点。
您可以使用assign()操作kafkaconsumer/assign手动将分区分配给使用者。这将禁用组重新平衡。请小心使用。
您可以在kafkaproducer消息中指定分区详细信息。如果未指定,则按照分区器策略存储。