要读取主题中的所有分区:
~bin / kafka-console-consumer.sh --zookeeper localhost:2181 - topic myTopic --from-beginning
如何使用主题的特定分区? (例如使用分区键13)
如何使用特定的分区键在分区中生成消息?可能吗?
您不能使用控制台消费者和 生产环境 者 . 但您可以使用更高级别的客户端(使用适合您的任何语言) .
您可以使用例如 assign 方法手动分配要使用的特定主题分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java#L906)
assign
您可以使用自定义 Partitioner 覆盖分区逻辑,您将手动决定如何对邮件进行分区(https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.java#L206-L208)
Partitioner
有了许多可用的客户端,您可以像serejja所说的那样指定分区号 .
另请查看https://github.com/cakesolutions/scala-kafka-client,它使用actor并为手动分区和偏移提供多种模式 .
如果你想在终端上做同样的事情,我建议你使用kafkacat . (https://github.com/edenhill/kafkacat)我在开发过程中的个人选择 .
你可以做的事情
kafkacat -b localhost:9092 -f 'Topic %t[%p], offset::: %o, data: %s key: %k\n' -t testtopic
对于特定分区,您只需使用 -p 标志 .
-p
控制台 生产环境 者和消费者不提供这种灵活性 . 您可以通过Kafka API实现这一目标 .
您可以使用assign()操作KafkaConsumer/Assign手动将分区分配给使用者 . 这将禁用组重新 balancer . 请仔细使用 .
您可以在KafkaProducer消息中指定分区详细信息 . 如果未指定,则按照分区策略存储 .
3 回答
您不能使用控制台消费者和 生产环境 者 . 但您可以使用更高级别的客户端(使用适合您的任何语言) .
您可以使用例如
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)有了许多可用的客户端,您可以像serejja所说的那样指定分区号 .
另请查看https://github.com/cakesolutions/scala-kafka-client,它使用actor并为手动分区和偏移提供多种模式 .
如果你想在终端上做同样的事情,我建议你使用kafkacat . (https://github.com/edenhill/kafkacat)我在开发过程中的个人选择 .
你可以做的事情
kafkacat -b localhost:9092 -f 'Topic %t[%p], offset::: %o, data: %s key: %k\n' -t testtopic
对于特定分区,您只需使用
-p
标志 .控制台 生产环境 者和消费者不提供这种灵活性 . 您可以通过Kafka API实现这一目标 .
您可以使用assign()操作KafkaConsumer/Assign手动将分区分配给使用者 . 这将禁用组重新 balancer . 请仔细使用 .
您可以在KafkaProducer消息中指定分区详细信息 . 如果未指定,则按照分区策略存储 .