如何使用 Azure 事件网格发布覆盖默认过期时间到队列?

Posted

技术标签:

【中文标题】如何使用 Azure 事件网格发布覆盖默认过期时间到队列?【英文标题】:How to override default expiration time with Azure Event Grid publishing to queue? 【发布时间】:2021-03-26 06:27:48 【问题描述】:

我在 Azure Blob 存储上创建了事件网格订阅,每次创建/修改 blob 时都会向 Azure 队列发送消息。使用默认 TTL 插入消息,即 7 天。有没有办法改变这个参数?我想将过期时间延长至至少 14 天。

【问题讨论】:

【参考方案1】:

AEG 订阅无法更改发送到事件处理程序资源的消息的任何属性。

但是,作为一种解决方法,可以将 EventGridTrigger 函数与 CloudQueue 输出绑定到存储队列一起使用。

以下代码 sn-p 是您的解决方案的 EventGridTrigger 函数示例:

运行.csx:

#r "Newtonsoft.Json"
#r "Microsoft.WindowsAzure.Storage"

using Microsoft.WindowsAzure.Storage.Queue;
using Microsoft.WindowsAzure.Storage;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public static async Task Run(JObject eventGridEvent, CloudQueue outputQueue, ILogger log)

    log.LogInformation(eventGridEvent.ToString());

    await outputQueue.AddMessageAsync(new CloudQueueMessage(eventGridEvent.ToString()), 
       TimeSpan.FromDays(14),    // TTL
       TimeSpan.FromSeconds(0), 
       new QueueRequestOptions(),
       new OperationContext());      

function.json:


  "bindings": [
    
      "type": "eventGridTrigger",
      "name": "eventGridEvent",
      "direction": "in"
    ,
    
      "name": "outputQueue",
      "type": "queue",
      "direction": "out",
      "queueName": "test",
      "connection": "myaccount_STORAGE"
    
  ]

【讨论】:

以上是关于如何使用 Azure 事件网格发布覆盖默认过期时间到队列?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 事件网格空事件

用于增加侦听器的 Azure 事件网格

使用内置触发器或事件网格的 Azure 函数

将文件上传到 Azure Blob 存储时没有触发事件网格事件——为啥?

诊断 Azure 事件网格中的故障?

Azure 事件中心 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息