通过Azure事件网格订阅传递元数据?

时间:2019-08-18 06:51:44

标签: azure-eventgrid

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

但是我希望能够随每个接收到的事件传递一些元数据,因此我可以将事件与外键(客户标识符)相关联,而不必对每个事件做额外的工作。

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

1 个答案:

答案 0 :(得分: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);
    }

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

enter image description here