当前位置: 首页 > 知识库问答 >
问题:

azure event grid中的订阅验证事件消息架构是什么?

卫弘懿
2023-03-14
  1. 使用门户创建了具有云事件架构的新azure事件网格域
  2. 使用azure函数创建了新的web钩子endpoint,该endpoint可以接收订阅验证事件和事件通知
  3. 使用门户为上述域创建了新的azure事件网格主题(作为以下订阅的一部分)
  4. 使用云事件架构和上述web挂钩endpoint创建了新的azure事件网格订阅
  5. 创建订阅时,网格基础设施通过订阅验证事件调用endpoint,以验证web钩子endpoint

令我惊讶的是,验证事件结构(如下所示)似乎符合本机事件网格架构,而不是云事件架构:

[{
    "id": "6309ef83-117f-47aa-a07c-50f6e71a8ca5",
    "topic": "/subscriptions/13ad1203-e6d5-4076-bf2b-73465865f9f0/resourceGroups/xxxx-sandbox-rg/providers/Microsoft.EventGrid/domains/eg-xxx-test-cloud-domain/topics/eg-xxx-test-cloud-topic",
    "subject": "",
    "data": {
        "validationCode": "391889BB-FCC3-4269-A2BD-0918B5BAB0AE",
        "validationUrl": "https://rp-westus.eventgrid.azure.net/eventsubscriptions/xxxx-subscription-3/validate?id=391889BB-FCC3-4269-A2BD-0918B5BAB0AE&t=2019-01-30T15:45:37.0521594Z&apiVersion=2018-09-15-preview&[Hidden Credential]"
    },
    "eventType": "Microsoft.EventGrid.SubscriptionValidationEvent",
    "eventTime": "2019-01-30T15:45:37.0521594Z",
    "metadataVersion": "1",
    "dataVersion": "2"
}]

我期望以下订阅验证事件符合云事件架构(基于https://docs . Microsoft . com/en-us/azure/event-grid/cloud events-schema # cloud event-schema的0.1版本的云事件架构):

{
    "eventID" : "6309ef83-117f-47aa-a07c-50f6e71a8ca5",
    "source" : "/subscriptions/13ad1203-e6d5-4076-bf2b-73465865f9f0/resourceGroups/xxxx-sandbox-rg/providers/Microsoft.EventGrid/domains/eg-xxx-test-cloud-domain/topics/eg-xxx-test-cloud-topic",
    "data": {
        "validationCode": "391889BB-FCC3-4269-A2BD-0918B5BAB0AE",
        "validationUrl": "https://rp-westus.eventgrid.azure.net/eventsubscriptions/xxxx-subscription-3/validate?id=391889BB-FCC3-4269-A2BD-0918B5BAB0AE&t=2019-01-30T15:45:37.0521594Z&apiVersion=2018-09-15-preview&[Hidden Credential]"
    },
    "eventType" : "Microsoft.EventGrid.SubscriptionValidationEvent",
    "eventTime" : "2019-01-30T15:45:37.0521594Z",
    "cloudEventsVersion" : "0.1",
    "eventTypeVersion" : "2",
}

我错过了什么?

共有2个答案

田兴旺
2023-03-14

这是云事件V0.1规范的Azure事件网格实现中的已知问题/预期行为。在Azure事件网格中实现云事件V1.1规范时,云事件标准中没有定义验证握手/滥用保护模型,因此事件网格的现有验证握手模型/架构也用于云事件订阅者。

宦炜
2023-03-14

基本上,webhook订户处理以下两组事件。特定的事件类型存储在http头“aeg-event-type”中。

> < li>

事件网格模型的内部事件,例如事件类型SubscriptionValidation和SubscriptionDeletion。这些事件类型的架构始终与默认架构(如EventGridSchema)相同。换句话说,它不依赖于EventDeliverySchema。在我看来,拥有内部事件的默认模式是一种强事件类型,特别是当我们有一个CustomInputSchema时。

兴趣源事件(主题)是由输入模式定义的事件,目前事件网格模型支持三种类型,如EventGridSchema(默认)、CloudEventSchema和CustomInputSchema。AEG支持以下模式输入/输出映射:

  1. EventGridSchema到交付模式、EventGridSchema和CloudEventSchema
  2. CloudEventSchema到仅交付模式CloudSchemaSchema
  3. CustomInputSchema到传递模式、EventGridSchema和CloudEventSchema以及CustomInputScheme

标头中的事件类型为:aeg-event-type=通知,架构基于订阅的EventDeliverySchema(请参阅以下映射)。

基于上述,对于您的场景,您应该为内部事件(默认模式为EventGridSchema)和基于订阅的EventDeliverySchema的通知事件提供单独的强类型对象

以下是超文本传输协议标头的示例:

aeg-subscription-name=EVENTGRIDSCHEMA
aeg-delivery-count=0
aeg-data-version=
aeg-metadata-version=0
aeg-event-type=SubscriptionValidation

注意,只有一个订阅名称来确定订阅了哪个EventDeliverySchema。最好有一个额外的aeg头,例如:aeg订阅标签,以将一些订阅元数据传递给订阅者处理程序。

作为一种解决方法,我们可以通过url查询参数将一些值传递给订阅者webhook处理程序,例如:

 类似资料:
  • 微信文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html 组合模板并添加至帐号下的个人模板库 $tid = 563; // 模板标题 id,可通过接口获取,也可登录小程序后台查看获取 $kidLi

  • 开普勒消息目前分为三大类:公告,告警和通知。 通知中根据不同的操作事件类型,分为十几个事件。每个事件都跟项目操作相关。便于接收项目操作变更的通知。 分类 事件 公告 Alarm 告警 Proclaim 通知 Build,Apply,Audit,Delete,Rollback,Logging,Reboot,Command,Storage,Extend... 订阅界面: 用户中心,点击头像,下拉菜单→

  • Node.js应用程序可以使用composer-client.BusinessNetworkConnection.onAPI调用从业务网络订阅事件。事件在业务网络模型文件中定义,并由交易处理函数文件中的指定交易处理。有关发布事件的更多信息,请参阅发布事件。 在你开始之前 在应用程序可以订阅事件之前,你必须定义一些事件和发送它们的交易。还必须部署业务网络,并且必须具有可连接到该业务网络的连接配置文件

  • 我是新的数据流和发布子工具在GCP。 需要将prem过程中的电流迁移到GCP。 当前流程如下: 我们有两种类型的数据馈送 Full Feed–其adhoc作业–完整XML的大小约为100GB(单个XML–非常复杂的一个–完整的数据–ETL作业处理此XML并将其加载到约60个表中) 单独的ETL作业用于处理完整提要。ETL作业过程完全馈送并创建负载就绪文件,所有表将被截断并重新加载 源系统每30分钟

  • 订阅收到的whisper消息。 调用: web3.shh.subscribe('messages', options [, callback]) 参数: "messages" - String: 订阅类型 options:Object - 订阅选项,有如下字段: symKeyID - String: 用于消息解密的对称密钥 privateKeyID - String: 用于消息解密的私钥 sig

  • 主要内容:一、通知,二、源码分析,三、总结一、通知 在Redis中,既可以实现消息的发送又可以实现订阅,也就是常说的发布/订阅。它的主要逻辑实现在nofigy.c和module.c、pubsub.c中,其实通知做为一种辅助功能,是易用性的一种良好的接口。Redis的通知功能是一种即时在线通知功能,如果CS端断线后,相关的消息就无法再次通知,也就是说,消息机制没有保存和重发功能。这也是为了实现设计上的简单和功能实现的鲁棒性的考虑,至于以后会