Kafka 和 C# - 向特定分区发送消息

Kafka and C# - Send Message To Specific Partition

我 运行 卡夫卡与 Docker,

首先我创建了一个这样的话题,

docker exec -t kafka kafka-topics --bootstrap-server :9092 --create --topic kafka-test --partitions 5 -- replication-factor1

如你所见,有5个分区,我使用了下面的代码

我认为此代码可能会生成消息,但仅针对分区 3,

它可以工作,但会为所有分区划分数据,因此不仅适用于分区 3...其中一些位于下方,如 P2 和 P0(分区 2 - 分区 0)

但我只想为特定分区生成消息...

我错过了什么吗?还是我弄错了什么?

以下消费者代码

这是消费者的照片..

KafkaNet 似乎是一个废弃的项目。

切换到 confluent-kafka-dotnet,您有一个 Produce 方法接受 TopicPartition 作为参数,您可以使用它代替 Message 上的 Meta 属性本身(应该只是一个键+值+headers)。

ProducerConfig config = new ProducerConfig { BootstrapServers = bootstrapServers, ClientId = Dns.GetHostName() };
using (var producer = new ProducerBuilder<Null, string>(config).Build()) { 
    var topicPart = new TopicPartition("topic", new Partition(3)); 
    var result = await producer.ProduceAsync(topicPart, new Message<Null, string> { Value = message }); 
}

此外 - Kafka 不是 HTTP 服务;从您的 Uri 变量中删除协议。