如何在Kafka Consumer中处理多个记录?

时间:2019-07-16 06:07:42

标签: c# .net apache-kafka confluent-kafka

嗨,我正在研究Confluent Kafka Consumer。我的经纪人中有多条记录。我现在想处理所有记录。以下是我对消费者的实现。

public ConsumeResult<string, GenericRecord> Consume(string topic)
    {
      ConsumeResult<string, GenericRecord> result;
      try
      {
        result = consumer.Consume();
        Commit(result);
        return result;
      }
      catch (Exception e)
      {
        this.logger.Error("KafkaClient", $"Error sending message '{e.Message}'");
        return null;
      }
    }

Result retuurned from consumer 如果Broker内有多个记录,那么一个事件/消息我将使用GenericRecord获得时间。如果有多个记录,那么如何有效处理消费者?任何帮助,将不胜感激。谢谢

1 个答案:

答案 0 :(得分:1)

您会循环播放。参见示例

https://github.com/confluentinc/confluent-kafka-dotnet/blob/master/examples/AvroGeneric/Program.cs

while (true)
{
    try
    {
        var consumeResult = consumer.Consume(cts.Token);

        Console.WriteLine($"Key: {consumeResult.Message.Key}\nValue: {consumeResult.Value}");
    }
    catch (ConsumeException e)
    {
        Console.WriteLine($"Consume error: {e.Error.Reason}");
    }
}