我有一个带有相应分区的偏移量列表,我需要手动提交它们。 为此,我遍历列表并将分区分配给消费者,然后寻找特定的偏移量。 然后我正在使用消息并将 ConsumerBulider 传递给 commit 方法。 有时它执行得很顺利,但有时它会抛出“Local:Waiting for Coordinator”异常。 但是在这两种情况下,当我之后尝试使用消息时,我会重新使用我已经提交的相同系列的消息,或者我应该说我尝试提交。这意味着我永远无法真正提交它们:(
`
foreach (var item in cmdparamslist)
{
Partition p = new Partition(Int16.Parse(item.PartitionID));
TopicPartition tp = new
TopicPartition(configuration.GetSection("KafkaSettings").GetSection("Topic").Value, p);
Offset o = new Offset(long.Parse(item.Offset));
TopicPartitionOffset tpo = new TopicPartitionOffset(tp, o);
try
{
KafkaConsumer.Assign(tpo);
await Task.Delay(TimeSpan.FromSeconds(1));
KafkaConsumer.Seek(tpo);
var cr = KafkaConsumer.Consume(cts.Token);
try
{
KafkaConsumer.Commit(cr);
}
catch (TopicPartitionOffsetException e1)
{
Console.WriteLine("exception " + e);
}
catch (KafkaException e)
{
Console.WriteLine("exception " + e);
}
}
catch (KafkaException e)
{
Console.WriteLine("exception " + e);
}
}
KafkaConsumer.Close();
}
catch(Exception e)
{
Console.WriteLine("exception "+e);
}
}
消费者/客户配置:
var conf = new ConsumerConfig
{
GroupId = Guid.NewGuid().ToString(),
BootstrapServers = configuration.GetSection("KafkaSettings").GetSection("RemoteServers").Value,
AutoOffsetReset = AutoOffsetReset.Earliest,
SaslMechanism = SaslMechanism.Gssapi,
SecurityProtocol = SecurityProtocol.SaslPlaintext,
EnableAutoCommit = false
//EnableAutoOffsetStore = false
};`
我使用的是 Confluent.Kafka 1.6.2 版本和 .net5
有人可以帮我吗?