如何获取Event Grid Partner Topic端点及.NET Core应用连接方法
问题
我想用.NET Core控制台应用读取Event Grid中的事件,按照官方文档操作时,发现文档里的Event Grid端点说明只针对常规Topic,不适用Partner Topic。我创建了MS Graph订阅,当Entra Groups发生变更时触发事件,通过以下az cli命令查询名为yourPartnerTopic的Partner Topic详情:
az eventgrid partner topic show --ids /subscriptions/[mysubscription]/resourceGroups/DefaultResourceGroup-WIDGETS/providers/Microsoft.EventGrid/partnerTopics/yourPartnerTopic
返回结果如下:
{ "activationState": "Activated", "eventTypeInfo": null, "expirationTimeIfNotActivatedUtc": null, "id": "/subscriptions/mysubscriptionid/resourceGroups/DefaultResourceGroup-WDIGETS/providers/Microsoft.EventGrid/partnerTopics/yourPartnerTopic", "identity": null, "location": "canadacentral", "messageForActivation": null, "name": "yourPartnerTopic", "partnerRegistrationImmutableId": "123123-707c-436d-bbbb-123123", "partnerTopicFriendlyDescription": null, "provisioningState": "Succeeded", "resourceGroup": "DefaultResourceGroup-WIDGETS", "source": "tenant_mytenantId", "systemData": null, "tags": null, "type": "Microsoft.EventGrid/partnerTopics" }
结果里没有endpoint字段,Azure Portal的该Topic概览页也找不到端点。想咨询:是否可以通过.NET应用连接Partner Topic,还是仅支持自定义Topic?求相关建议。
解答
- Partner Topic无法像自定义Topic那样直接通过SDK主动连接读取事件,因为它的事件流转是推送模式:由事件源(这里是MS Graph)将事件推送到你配置的事件处理端点,而非提供供主动拉取的端点。
- 你的场景下,正确的处理方式是对接创建MS Graph订阅时指定的事件处理端点,而非Partner Topic本身:
- 如果端点是Azure Storage Queue:使用
Azure.Storage.QueuesSDK在控制台应用中拉取队列里的事件消息 - 如果端点是Webhook:需要将控制台应用改造为ASP.NET Core Web服务(比如Minimal API),接收事件推送的POST请求
- 如果端点是Azure Function:可以直接在Function中处理事件,或者从Function绑定的存储介质中读取事件
- 如果端点是Azure Storage Queue:使用
- 补充:Partner Topic的作用是作为事件源与你的处理端点之间的中转桥梁,本身不对外暴露可连接的端点,这是它和自定义Topic的核心区别,你之前参考的自定义Topic文档属于主动拉取模式,不适用于Partner Topic的推送场景。
内容的提问来源于stack exchange,提问作者dot
相关产品推荐
相关产品推荐

