我创建了一个有 10 个分区的 Kafka 主题。我希望在消费者方面有 10 个具有相同 groupId
的消费者,它们将并行地从 Kafka 主题中提取消息。我正在使用 .Net Core。我怎样才能做到这一点?
对于 Kafka 消费者,我使用了以下示例代码:
var config = new ConsumerConfig
{
GroupId = "consumers",
BootstrapServers = "localhost:9092",
AutoOffsetReset = AutoOffsetReset.Earliest
};
using (var consumer = new ConsumerBuilder<Ignore, string>(config).Build())
{
consumer.Subscribe("Coupons");
CancellationTokenSource cts = new CancellationTokenSource();
Console.CancelKeyPress += (_, e) => {
e.Cancel = true;
cts.Cancel();
};
try
{
while (true)
{
try
{
var cr = consumer.Consume(cts.Token);
Console.WriteLine(cr.Value);
}
catch (ConsumeException e)
{
Console.WriteLine($"Error occured: {e.Error.Reason}");
}
}
}
catch (OperationCanceledException)
{
consumer.Close();
}
}
我想我需要删除这个 while (true)
并以某种方式通过 Tasks 调用 10 个 Kafka 消费者,但我不知道如何。