如何使用Azure SDK将事件中心事件发布到事件网格主题?

时间:2020-07-13 15:40:51

标签: azure azure-eventgrid

我想设置一个事件中心,以使用Azure SDK将事件发布到事件网格主题。

这可以直接从事件中心命名空间在Azure门户中完成,创建事件网格系统主题。

但是,我似乎找不到使用Azure SDK创建事件网格系统主题或创建事件网格自定义主题并将其设置为事件中心命名空间的终结点的正确方法。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

该文档可用,可能有点分散。如果导航到事件网格documentation site,则菜单树中的“引用”节点具有所有受支持的语言/ SDK。对于.NET,它将带您进入有关如何发布和订阅(link)的文章。要管理主题,您需要management SDK并且示例可用here

请注意,这些示例是在管理SDK的版本稍旧的版本上(与issue相关),但是您应该能够升级这些版本并使用这些示例。

答案 1 :(得分:0)

最终使用REST API发出HTTP请求以创建事件网格系统主题。 API请求的文档: https://docs.microsoft.com/en-us/rest/api/eventgrid/version2020-04-01-preview/systemtopics/createorupdate

答案 2 :(得分:0)

Ph!这个问题困扰了我三天,我几乎失去了希望,但终于成功了。
参考: https://docs.microsoft.com/en-us/java/api/overview/azure/eventgrid?view=azure-java-stable

代码

    final String clientId = "clientId";
    final String tenantId = "tenantId";
    final String clientSecret = "clientSecret";
    final String subscriptionId = "subscriptionId";

    ApplicationTokenCredentials credentials = new ApplicationTokenCredentials(clientId, tenantId, clientSecret,
            AzureEnvironment.AZURE);
    credentials.withDefaultSubscriptionId(subscriptionId);

    EventGridManager eventGridManager = EventGridManager.configure().authenticate(credentials,
            credentials.defaultSubscriptionId());
    
    eventGridManager.eventSubscriptions().define("subscription")
    .withScope("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/microsoft.storage/storageaccounts/{storageAccountName}")
    .withEventDeliverySchema(EventDeliverySchema.EVENT_GRID_SCHEMA)
    .withDestination(new WebHookEventSubscriptionDestination().withEndpointUrl("{valid https url}"))
    .create();

这将创建带有订阅的系统主题