kafka指定partion发送
时间: 2023-07-09 17:53:21 浏览: 83
要在 C# 中发送消息到 Kafka 的指定分区,您可以在 `ProduceAsync` 方法中指定 `Partition` 参数。以下是一个示例代码:
```csharp
using Confluent.Kafka;
using System;
public class KafkaProducer
{
private readonly IProducer<string, string> _producer;
public KafkaProducer(string bootstrapServers)
{
var config = new ProducerConfig { BootstrapServers = bootstrapServers };
_producer = new ProducerBuilder<string, string>(config).Build();
}
public void Publish(string topic, int partition, string message)
{
var deliveryReport = _producer.ProduceAsync(topic, new Message<string, string> { Key = null, Value = message, Partition = partition });
deliveryReport.ContinueWith(task =>
{
Console.WriteLine($"Message delivered to {task.Result.TopicPartitionOffset}");
});
}
public void Dispose()
{
_producer.Dispose();
}
}
```
在这个例子中,我们为 `Publish` 方法添加了一个 `partition` 参数,用于指定要发送到的分区。在使用时,我们可以使用以下代码示例来将消息发布到指定的分区:
```csharp
var producer = new KafkaProducer("localhost:9092");
producer.Publish("test-topic", 2, "Hello, Kafka!");
producer.Dispose();
```
在这个示例中,我们将消息发布到名为 "test-topic" 的主题的第 3 个分区(分区从 0 开始编号)。请注意,如果您指定的分区不存在,那么 Kafka 将会自动为您选择一个分区。
阅读全文