Как я могу получить список всех `PartitionTopic`s для топи c в Confluent.Kafka? - PullRequest
0 голосов
/ 14 июля 2020

Я использую confluent-kafka-do tnet (Confluent.Kafka) для создания сообщений для Kafka.

Я хотел бы вручную управлять тем, какие разделы сообщения go должны чтобы сохранить порядок для определенных групп сообщений.

Как можно получить список PartitionTopic для топи Kafka c?

Я просмотрел это решение в Java. Но я не понимаю, как добиться той же функциональности с Confluent.Kafka.

В качестве альтернативы было бы приемлемо отправлять сообщения с ключами, потому что одни и те же ключи гарантированно находятся в тех же разделах. Но опять же, я не смог найти способ создать new Message с любым типом ключа, кроме Null. Итак, пример отправки сообщения с ненулевым ключом был бы полезен.

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Чтобы получить список TopicPartitions для одной топи c, вы можете использовать класс 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;
}

Вы можете найти больше примеров AdminClient здесь . Но обратите внимание на предупреждения, в которых говорится: «API для этой функции может быть изменен».

0 голосов
/ 14 июля 2020

Я выяснил, что причина, по которой я не мог создавать сообщения с ненулевым ключом, заключалась в том, что я указал свой производитель с помощью <Null, ...>.

Спасибо mjwills за просил у меня минимальный воспроизводимый пример, который побудил меня решить эту проблему.

...