我有一个带有事件中心触发器的 Azure 函数。此集线器从设备接收消息并将它们存储在 Blob 中。最近,我注意到重复的消息存储在 blob 中。Blob 存储中的文件按上次修改日期排序,如果您查看屏幕截图,您会发现情况并非如此。有没有人见过这个问题?
我还有一个 Azure 函数正在写入 cosmos DB,对于 blob 中的重复消息,cosmos 中没有相应的重复消息。
我还连接了时间序列洞察力,它也没有任何重复的消息。
我打开了事件中心捕获,那里也没有重复的消息。
这是屏幕截图。
第一列是事件中心排队时间的 unix 时间戳。如果我没有与文件名关联的 guid,它将引发异常。这是一个将数据存储在 blob 中的片段。
dynamic msg = JObject.Parse(myEventHubMessage);
string deviceId = msg.deviceId;
if (deviceId == "5Y.....")
{
var filename = "_" + ((DateTimeOffset)enqueuedTimeUtc).ToUnixTimeSeconds() + "_" + Guid.NewGuid().ToString() + ".json";
var containerName = "containerName/";
var path = containerName + deviceId + "/" + filename;
using (var writer = binder.Bind<TextWriter>(new BlobAttribute(path)))
{
writer.Write(myEventHubMessage);
}
}
这里的逻辑非常简单。如果事件到达事件中心,则会触发该函数并将数据存储在 Azure Blob 中。