是通过Confluent .NET Client使CommitAsync()冗余

时间:2018-03-19 20:48:48

标签: apache-kafka kafka-consumer-api

我是卡夫卡的新手。我想知道为什么CommitAsync()不会做任何事情 AdvancedConsumer

也就是说,在记住偏移提交方面,CommitAsync启用和禁用时的结果是相同的。

测试1:停用CommitAsync()

1在CommitAsync()上禁用Run_Consume()方法,如下所示:

public static void Run_Consume(string brokerList, List<string> topics)
       {
         ...
                   //if (msg.Offset % 5 == 0)
                   //{
                   //    Console.WriteLine($"Committing offset");
                   //    var committedOffsets = consumer.CommitAsync(msg).Result;
                   //    Console.WriteLine($"Committed offset: {committedOffsets}");
                   //}
               }
           }
       }

2当Consumer启动时,它会读取已从上一个会话中读取的从偏移0到最后偏移N的所有消息

3将新消息发布到Producer,消费者显示偏移量为N + 1

的新消息

4杀死消费者

5启动消费者,它显示从偏移0到N + 1的所有消息

测试2:启用CommitAsync()

步骤1在CommitAsync()

上启用Run_Consume()方法

按照上面的步骤2 - 5进行操作

在两次测试中,新开始的消费者仍然可以记住最后一次偏移。因此,为什么CommitAsync()被称为?{/ p>

请注意以下类似问题: https://github.com/confluentinc/confluent-kafka-dotnet/issues/470#issuecomment-375634009

0 个答案:

没有答案