如何读取azure blob存储中的文件更改?

mdfafbf1  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(364)

我正在尝试以字节流的形式从azure blob存储读取文件,如下所示:

public static final String storageConnectionString =
            "DefaultEndpointsProtocol=https;AccountName=*;AccountKey=*;EndpointSuffix=core.windows.net";

    public static void main(String[] args) {
        try {
            CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
            CloudBlobClient blobClient = storageAccount.createCloudBlobClient();
            CloudBlobContainer container = blobClient.getContainerReference("inputfile");
            CloudBlob blob = container.getBlockBlobReference("test.txt");
            InputStream input =  blob.openInputStream();
            InputStreamReader inr = new InputStreamReader(input, "UTF-8");
            String output = IOUtils.toString(inr);
            System.out.println(output);

            System.out.println("read is success");

        } catch (Exception e) {
            // Output the stack trace.
            e.printStackTrace();
        }
    }

我可以从azure文件存储读取文件。我正在尝试创建类似于javawatchservice的东西,如果文件中有任何更改,我希望读取更改并打印数据,例如下面的示例,假设我在blob中有文件test.txt文件,它最初有如下数据 "Hello" 我的程序应该打印出来 "Hello" .
一段时间后,我将更新文件与 "world" ,现在我只想打印 "world" 这是文件中的新变化。
在azure blob存储中是否可能?我看到了 azure_blob_storage 但没有找到像java watchservices这样的方法。您能帮助我如何读取azure blob存储中的文件更改吗?

y3bcpkx1

y3bcpkx11#

没有这种服务。但是,您可以使用事件网格(event grid)作为事件存储库,订阅azure存储帐户中的更改(new/updates blob),然后触发一些函数(可能是azure函数)将更改返回给客户端。

下面是一步一步的方法:
https://docs.microsoft.com/en-us/azure/event-grid/blob-event-quickstart-portal

相关问题