繁体   English   中英

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

[英]Kafka and C# - Send Message To Specific Partition

我用 Docker 运行 Kafka,

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

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

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

卡夫卡 C# 代码

我认为这段代码可能会产生消息,但仅适用于分区 3,

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

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

我错过了什么吗? 或者我有什么问题吗?

下面的消费者代码

在此处输入图像描述

这是消费者的照片..

卡夫卡价值观

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

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

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 变量中删除协议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM