我想使用Confluent dotnet client在应用程序启动中处理一个主题。假设以下示例:
while (true)
{
try
{
var cr = c.Consume();
Console.WriteLine($"Consumed message '{cr.Value}' at: '{cr.TopicPartitionOffset}'.");
}
catch (ConsumeException e)
{
Console.WriteLine($"Error occured: {e.Error.Reason}");
}
}
当 Kafka 中没有新消息时,c.Consume 将被阻塞。因为我想用它来启动应用程序(比如缓存预热),所以当我发现没有新消息时,我想继续我的代码。
我知道设置超时存在过载,c.Consume(timeout)
但这种方法的问题是,如果您的主题中有一条消息,并且阅读消息的持续时间超过了您的超时,您会收到不希望的空输出。