我正在尝试对触发的消息(队列)进行一些日志记录,以便如果消息失败并在下次由Webjob接收时,我将记录一些信息,以便不再重做成功路径(例如在stage1之后向客户端发送消息)。 因此,我计划使用azure blob存储绑定将其配置为输入和输出流。但是为了做到这一点,我需要为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?
答案 0 :(得分:1)
文档供您参考: Storage Blob Output Usage
答案 1 :(得分:-1)
感谢@jack Jia。有帮助。但是对于网络作业,我需要先使用Blob才能正确绑定它。
public static void ProcessQueueMessage([QueueTrigger("%testQueue%")],
TestMessageModel testMessage,
[Blob("testStorage")] CloudBlobContainer blobContainer)
{
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(testmessage.id+".txt");
}