【发布时间】:2021-12-29 05:11:18
【问题描述】:
我目前正在使用 Azure 存储帐户上的 changefeed,并希望区分创建(上传)的 blob 和刚刚修改的 blob。
在下面的示例中,我上传了一个 blob (agent-diag.txt),然后编辑该文件(添加一些文本)。
在这两种情况下,它都会引发“BlobCreated”,似乎没有“BlobUpdated”的概念。
来自 MS Doc:更改提要记录中捕获了以下事件类型:
Blob 已创建 已删除 Blob BlobPropertiesUpdated 已创建 BlobSnapshot
如果元数据或标签等发生更改,则会记录 BlobPropertiesUpdated。但如果文件被修改,我看不到任何识别方法。有什么想法吗?
操作名称:PutBlob Api:Azure.Storage.Blobs.ChangeFeed.BlobChangeFeedEventData 主题:/blobServices/default/containers/myblobs/blob/agent-diag.txt 事件类型:BlobCreated 活动时间:17/11/2021 23:25:42 +00:00
操作名称:PutBlob Api:Azure.Storage.Blobs.ChangeFeed.BlobChangeFeedEventData 主题:/blobServices/default/containers/myblobs/blob/agent-diag.txt 事件类型:BlobCreated 活动时间:17/11/2021 23:26:07 +00:00
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.ChangeFeed;
namespace Changefeed
{
class Program
{
const string conString = "DefaultEndpointsProtocol=BlahBlah";
public static async Task<List<BlobChangeFeedEvent>> ChangeFeedAsync(string connectionString)
{
// Get a new blob service client.
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
// Get a new change feed client.
BlobChangeFeedClient changeFeedClient = blobServiceClient.GetChangeFeedClient();
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
// Get all the events in the change feed.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
changeFeedEvents.Add(changeFeedEvent);
}
return changeFeedEvents;
}
public static void showEventData(List<BlobChangeFeedEvent> changeFeedEvents)
{
foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedEvents)
{
string subject = changeFeedEvent.Subject;
string eventType = changeFeedEvent.EventType.ToString();
string eventTime = changeFeedEvent.EventTime.ToString();
string api = changeFeedEvent.EventData.ToString();
string operation = changeFeedEvent.EventData.BlobOperationName.ToString();
Console.WriteLine("Subject: " + subject + "\n" +
"Event Type: " + eventType + "\n" +
"Event Time: " + eventTime + "\n" +
"Operation Name: " + operation + "\n" +
"Api: " + api);
}
}
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
List<BlobChangeFeedEvent> feedlist = ChangeFeedAsync(conString).GetAwaiter().GetResult();
Console.WriteLine("Feedlist :" + feedlist.Count());
showEventData(feedlist);
}
}
}
【问题讨论】:
标签: azure .net-core azure-blob-storage