【问题标题】:Passing metadata with Azure Event Grid subscription?使用 Azure 事件网格订阅传递元数据?
【发布时间】:2019-12-23 19:44:46
【问题描述】:

我已通过事件中心订阅将我的 blob 存储帐户连接到事件网格,并且可以查看上传的 blob 中的事件。

但我希望能够为每个接收到的事件传递一些元数据,这样我就可以将事件与外键(客户标识符)相关联,而无需对每个事件进行额外的工作。

这可能吗?我在 API 文档中看不到任何关于此的内容。

【问题讨论】:

    标签: azure-eventgrid


    【解决方案1】:

    基于Azure Event Grid event schema for Blob storage,Blob 存储事件数据中没有元数据属性。

    请注意,只有一种特定情况将一些元数据从 AEG 订阅传递给其订阅者,例如 webhook 事件处理程序端点的查询字符串(例如 HttpTrigger 函数)。

    您的方案的解决方案是使用带有输出绑定到事件中心的 EventGridTrigger 函数(订阅者)。

    以下示例显示了使用 EventGridTrigger 函数的事件消息中介的轻量级实现:

        [FunctionName("Function1")]
        [return: EventHub("%myEventHub%", Connection = "AzureEventHubConnectionString")]
        public  async Task<JObject> Run([EventGridTrigger]JObject ed, ILogger log)
        {
            // original event message
            log.LogInformation(ed.ToString());
    
            // place for event data enrichment
            var metadata = new { metadata = "ABCD", abcd = 12345 };
    
            // enrich data object
            ed["data"]["url"]?.Parent.AddAfterSelf(new JProperty("subscription", JObject.FromObject(metadata)));
    
            // show after mediation
            log.LogWarning(ed.ToString());
    
            // forward to the Event Hub
            return await Task.FromResult(ed);
        }
    

    以及事件中心的日志输出:

    【讨论】:

    • 非常感谢,谢谢。很高兴确认当前的 blob 触发器无法做到这一点。我必须创造性地将 blob 映射到客户标识符。
    猜你喜欢
    • 2021-12-14
    • 2022-11-07
    • 1970-01-01
    • 2021-04-21
    • 2018-12-12
    • 2019-01-07
    • 2021-02-22
    • 2020-02-22
    • 1970-01-01
    相关资源
    最近更新 更多