C# 如何从触发器队列消息中的特定字段动态绑定存储blob名称
我正在尝试对触发的消息(队列)进行一些日志记录,这样,如果消息失败并且下次被webjob拾取,我就会记录一些信息,这样我就不会重做成功路径(比如在stage1之后向客户端发送消息)。 因此,我计划使用azure blob存储绑定来配置为输入和输出流。但为了做到这一点,我需要一个唯一的名称为blob。我在消息中有一个guid,我计划使用该guid从blob存储中读/写。 如何从队列消息中的guid字段动态配置此blob存储名称绑定。(我的消息非常大,我不想将整个消息用作blob存储名称) 如您所见,官方文档仅使用queueTrigger,它使用消息中的字符串作为blob名称。但我的信息看起来像这样大C# 如何从触发器队列消息中的特定字段动态绑定存储blob名称,c#,azure-storage-blobs,azure-webjobssdk,C#,Azure Storage Blobs,Azure Webjobssdk,我正在尝试对触发的消息(队列)进行一些日志记录,这样,如果消息失败并且下次被webjob拾取,我就会记录一些信息,这样我就不会重做成功路径(比如在stage1之后向客户端发送消息)。 因此,我计划使用azure blob存储绑定来配置为输入和输出流。但为了做到这一点,我需要一个唯一的名称为blob。我在消息中有一个guid,我计划使用该guid从blob存储中读/写。 如何从队列消息中的guid字段动态配置此blob存储名称绑定。(我的消息非常大,我不想将整个消息用作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)
}
我不想用这么可笑的名字来命名。
如何在testMessage中使用Id
谢谢@jack Jia。这很有帮助。但是对于webjob,我需要在正确绑定之前使用Blob
public static void ProcessQueueMessage([QueueTrigger("%testQueue%")],
TestMessageModel testMessage,
[Blob("testStorage")] CloudBlobContainer blobContainer)
{
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(testmessage.id+".txt");
}
在代码中使用CloudBlobContainer而不是Stream。以便您可以手动创建blockblob并设置其名称。回答补充道。请检查一下,太好了。我很高兴这有帮助。
public static void ProcessQueueMessage([QueueTrigger("%testQueue%")],
TestMessageModel testMessage,
[Blob("testStorage")] CloudBlobContainer blobContainer)
{
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(testmessage.id+".txt");
}