在处理当前消息之前,不要阅读下一封Kafka消息吗?

时间:2018-09-14 10:27:17

标签: c# apache-kafka confluent-kafka

当使用Confluent Kafka C#库使用消息时,我只想在完成处理当前消息时看到一条新消息(如果出现故障,我需要再次读取同一条消息)。换句话说,我不希望偏移发生改变,直到我明确告诉它改变为止。

要尝试实现此目的,我在配置中停用了自动提交功能(就像示例中一样):

{ "enable.auto.commit", false }
{ "auto.offset.reset", "smallest" }

然后我注释掉提交行:

while(true)
{
    if (!consumer.Consume(out Message<string, string> msg, TimeSpan.FromMilliseconds(100)))
    {
        continue;
    }

    //I thought by removing this line, I would keep getting the same message (until I've processed the message and commited the offset)
    //consumer.CommitAsync(msg).Result;
}

我的希望是,通过不提交,在调用Consume()时,我将不断收到相同的消息,但事实并非如此。即使我不提交,偏移量仍在变化,每次消费我都会收到新消息。

请清除我明显的误会?

0 个答案:

没有答案