在Service Fabric中访问文件系统

5

当我从Service Bus队列接收到新消息时,我需要在Service Fabric服务中使用ffmpeg对视频进行编码。我可以从资源中提取ffmpeg.exe并运行它,但我能否将输入/输出视频文件保存在内部文件系统中?

1个回答

5

我通过以下代码在本地集群上进行了测试:

    protected override async Task RunAsync(CancellationToken cancellationToken)
    {
        while (true)
        {
            cancellationToken.ThrowIfCancellationRequested();

            string filename = "testFile.txt";
            File.AppendAllText(filename, "test. ");

            string content = File.ReadAllText(filename);
            System.Diagnostics.Trace.WriteLine("Content:" + content);
            System.Diagnostics.Trace.WriteLine(new FileInfo(filename).FullName);

            await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);
        }
    }

结果输出如下:
Content:test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt
Content:test. test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt
Content:test. test. test. 
C:\SfDevCluster\Data\_App\_Node_3\SampleAppType_App51\work\testFile.txt

但是在下一次运行时,路径被更改为C:\SfDevCluster\Data_App_Node_3\SampleAppType_App52\work\testFile.txt。

所以我认为答案是:

可以使用本地文件系统,但仅限于临时文件。我认为在迭代结束时清理系统是一个好的做法。


3
你的结论是正确的。暂时的本地文件存储就是你想要在本地文件系统上进行的最远的范围,因为服务没有与任何特定的VM实例绑定。 - Vaclav Turecek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接