C# Confluent中的交易。消费者的卡夫卡

C# Confluent中的交易。消费者的卡夫卡,c#,apache-kafka,confluent-platform,C#,Apache Kafka,Confluent Platform,我使用ApacheKafka作为消息处理器,使用Asp.NETCore中的Confluent.Kafka作为使用者 我想使用消息并保存在数据库中,显然,我需要为队列中的提交或回滚消息创建一个事务 我正在使用此库的示例,代码如下: publicstaticvoidmain(字符串[]args) { var conf=new ConsumerConfig { GroupId=“测试消费者组”, bootstrapserver=“127.0.0.1:9092”, //注意:AutoOffsetRese

我使用ApacheKafka作为消息处理器,使用Asp.NETCore中的Confluent.Kafka作为使用者

我想使用消息并保存在数据库中,显然,我需要为队列中的提交或回滚消息创建一个事务

我正在使用此库的示例,代码如下:

publicstaticvoidmain(字符串[]args)
{
var conf=new ConsumerConfig
{
GroupId=“测试消费者组”,
bootstrapserver=“127.0.0.1:9092”,
//注意:AutoOffsetReset属性确定事件中的开始偏移量
//对于该客户组,还没有任何已提交的补偿
//感兴趣的主题/分区。默认情况下,提交偏移量
//自动,因此在本例中,消费将仅从
//第一次运行程序时主题“我的主题”中最早的消息。
AutoOffsetReset=AutoOffsetReset.Earlime
};
使用(var c=new ConsumerBuilder(conf.Build())
{
c、 订阅(“测试主题”);
CancellationTokenSource cts=新的CancellationTokenSource();
Console.CancelKeyPress+=(\uE)=>{
e、 Cancel=true;//防止进程终止。
cts.Cancel();
};
尝试
{
while(true)
{
尝试
{
var cr=c.Consume(cts.Token);//我需要这里的事务。。。
WriteLine($“在:{cr.TopicPartitionOffset}处使用的消息{cr.Value}'”;
}
捕获(消费异常)
{
WriteLine($”发生错误:{e.Error.Reason}”);
}
}
}
捕获(操作取消异常)
{
c、 Close();
}
}
}
我该怎么办?

默认情况下,Kafka consumer“自动并定期在后台提交偏移量”-此行为由两个配置参数定义:和

在您的情况下,需要手动进行提交:

var conf=new ConsumerConfig
{
// ..

EnableAutoCommit=false//感谢您的指导,我还有一个问题,我可以在一个主题中拥有多个订阅者吗?它是如何工作的?欢迎您。每个主题有多个消费者是一种标准模式,我建议您阅读本文