Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在本地文件中存储偏移量_C#_Apache Kafka_Kafka Consumer Api_Confluent Platform - Fatal编程技术网

C# 在本地文件中存储偏移量

C# 在本地文件中存储偏移量,c#,apache-kafka,kafka-consumer-api,confluent-platform,C#,Apache Kafka,Kafka Consumer Api,Confluent Platform,我正在使用Confluent.Kafka 0.9.5并遵循其示例 与示例不同的是:我想在本地存储偏移量。因此,我初始化了配置,如下所示 private static Dictionary<string, object> ConstructConfig(string brokerList) { string dir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().L

我正在使用Confluent.Kafka 0.9.5并遵循其示例

与示例不同的是:我想在本地存储偏移量。因此,我初始化了配置,如下所示

    private static Dictionary<string, object> ConstructConfig(string brokerList)
    {
        string dir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "cache", "kafka");
        if (!Directory.Exists(dir))
            Directory.CreateDirectory(dir);
        return new Dictionary<string, object>
        {
            { "group.id", Environment.GetEnvironmentVariable("Cluster.Name") },
            { "offset.store.method", "file" },  // Offset commit store method: 'file' - local file store 
            { "offset.store.path", dir }, // Path to local file for storing offsets. 
            { "offset.store.sync.interval.ms", 0 }, // Use -1 to disable syncing; and 0 for immediate sync after each write. 
            { "enable.auto.commit", false },
            { "statistics.interval.ms", 60000 },
            { "bootstrap.servers", brokerList },
            { "default.topic.config", new Dictionary<string, object>()
                {
                    { "auto.offset.reset", "smallest" }
                }
            }
        };
    }
但是在目标目录中没有创建任何文件。当我再次启动应用程序时,我会收到相同的消息。我当然有
offset.store.path


为什么没有存储偏移量?

后期注释:我猜
CommitAsync
正在做一些后台工作,您没有关闭消费者,否则就通知其刷新偏移量。注释:我猜
CommitAsync
正在做一些后台工作,并且您没有关闭消费者,否则将通知其刷新偏移
           while (true)
           {
               try
               {
                   msg = null;
                   if (!consumer.Consume(out msg, ts))
                       continue;
                   OnMessage(msg);

                   log.InfoFormat($"Offset = {msg.Offset}");

                   await consumer.CommitAsync(msg);
               }
               catch (Exception ex)
               {
                   // ...
                   break;
               }
           }