我正在使用confluent-kafka-dotnet (Confluent.Kafka)为Kafka生成消息。
我想手动管理消息转到哪些分区,以保持某些消息组的顺序。
如何获取Kafka主题的PartitionTopic列表?
我看过Java中的this solution。但我不明白如何用Confluent.Kafka实现同样的功能。
或者,可以使用键发送消息,因为可以保证相同的键在相同的分区上。但同样,我找不到一种方法来创建除Null之外的任何键类型的new Message。因此,使用非空键发送消息的示例会很有帮助。
发布于 2020-07-14 19:36:49
要获取单个主题的TopicPartitions列表,可以使用AdminClient类:
using (var adminClient = new AdminClientBuilder(new AdminClientConfig { BootstrapServers = "bootstrap-servers" }).Build())
{
var meta = adminClient.GetMetadata(TimeSpan.FromSeconds(20));
var topic = meta.Topics.SingleOrDefault(t => t.Topic == "topic-name");
var topicPartitions = topic.Partitions;
}你可以在here上找到更多的AdminClient例子。但是请注意警告:“此功能的API可能会更改。”
发布于 2020-07-14 18:12:40
我已经弄清楚,我不能用非空键创建消息的原因是因为我用<Null, ...>指定了我的生产者。
感谢mjwills向我询问最少的可重现示例,这促使我解决了这个问题。
https://stackoverflow.com/questions/62892202
复制相似问题