如何从触发队列消息内的特定字段动态绑定存储 blob 名称

我正在尝试对触发的消息(队列)进行一些日志记录,这样,如果消息失败并且下次它被网络作业拾取,我会记录一些信息,这样我就不会重做成功路径(例如发送stage1) 之后向客户端发送的消息。因此,我计划使用 azure blob 存储绑定来配置为输入和输出流。但为了做到这一点,我需要为该斑点起一个唯一的名称。我的消息中有一个 guid,我计划使用该 guid 从 blob 存储中读取/写入。如何从队列消息内的 guid 字段动态配置此 blob 存储名称绑定。(我的消息非常大,我不想使用整个消息作为 Blob 存储名称)。


public static void ProcessQueueMessage([QueueTrigger("%testQueue%")],

TestMessageModel testMessage,

[Blob("testStorage/{queueTrigger}", FileAccess.ReadWrite)] Stream logstream)

{


}

正如您所看到的,官方文档仅使用queueTrigger,它使用消息内的字符串作为blob名称。但我的消息看起来像这样


public class TestMessageModel

{

  public Guid Id {get; set;}

  public int FromOrg {get; set;}

  public DateTime BatchDate {get; set;}

  public Payments[] payments {get; set;}  // this array is big (many items)

}

我不想使用一些可笑的东西作为 blob 名称。如何使用testMessage中的Id?


开满天机
浏览 86回答 2
2回答

动漫人物

添加与存储 Blob 的输出集成。并将路径值设置为容器名称。在函数代码中,您可以直接使用容器,并创建具有特定名称的 blob(可以从队列消息中获取):最后,您将能够在目标容器中看到具有特定名称的 blob。

小唯快跑啊

这很有帮助。但对于 webjob,我之前需要使用 Blob 才能正确绑定它。public static void ProcessQueueMessage([QueueTrigger("%testQueue%")],TestMessageModel testMessage,[Blob("testStorage")] CloudBlobContainer blobContainer){   CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(testmessage.id+".txt");}
打开App,查看更多内容
随时随地看视频慕课网APP