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 变量中删除协议。
我 运行 卡夫卡与 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 变量中删除协议。