c# - 如何从触发队列消息中的特定字段动态绑定存储 blob 名称
问题描述
我正在尝试为触发的消息(队列)做一些日志记录,这样如果消息失败并且下次它被 webjob 拾取,我会记录一些信息,这样我就不会重做成功路径(比如发送在第一阶段之后给客户的消息)。所以我打算使用 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?
解决方案
- 添加与存储 Blob 的输出集成。并将路径值设置为容器名称。
- 在您的函数代码中,您可以直接使用容器,并创建一个具有特定名称的 blob(您可以从队列消息中获取):
- 最后,您将能够在目标容器中看到具有特定名称的 blob。
供您参考的文档: 存储 Blob 输出使用情况
推荐阅读
- c# - 如何使用另一个脚本中的变量
- c# - 如何修复此错误:“预期标识符”
- python - 获得 Deeplab 对小/欠平衡类的更严格的分割结果
- mysql - UnhandledPromiseRejectionWarning:错误:未找到 Category#products 的实体元数据
- memory-management - 运行时错误:CUDA 内存不足。试图分配...但内存是空的
- java - 需要将 Arraylist 从 java 程序传递给 R 脚本作为参数
- amazon-web-services - 是否可以在 AWS Application Load Balancer 中启用 x-forward
- python - ModuleNotFoundError:没有名为“keras”的模块无法导入 keras
- javascript - Bootstrap 3 datetimepicker - MinTime 和 MaxTime
- bash - bash函数内的花括号