在特定的kafka分区中使用和生成消息?

6psbrbz9  于 2021-06-08  发布在  Kafka
关注(0)|答案(4)|浏览(378)

用于读取主题中的所有分区:
~bin/kafka-console-consumer.sh--Zookeeperlocalhost:2181 --topic 我的主题--从一开始
如何使用主题的特定分区(例如,使用分区键13)
如何使用特定的分区键在分区中生成消息?有可能吗?

hzbexzde

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年)

rta7y2nd

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 旗帜。

n9vozmp4

n9vozmp43#

如何使用主题的特定分区(例如,使用分区键13)
有一面旗子叫 --partitionkafka-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

jexiocij

jexiocij4#

控制台生产者和消费者不提供这种灵活性。您可以通过kafkaapi实现这一点。
您可以使用assign()操作kafkaconsumer/assign手动将分区分配给使用者。这将禁用组重新平衡。请小心使用。
您可以在kafkaproducer消息中指定分区详细信息。如果未指定,则按照分区器策略存储。

相关问题