Azure 事件网格云事件架构 V1.0 与 Azure 事件网格域和自定义主题文档不清晰

Azure Event Grid Cloud Events Schema V1.0 with Azure Event Grid Domains and Custom Topics Documentation Not Clear

我选择在企业多租户模型应用程序中利用 Azure 事件网格。我还想使用 Cloud Events 而不是专有的 AEG 格式。我为每个租户使用 AEG 域,然后我想要一个自定义主题和消息主题。 v0.1 的云事件有一个“#”分隔 属性 用于云事件主题和主题。 V1.0好像没有了?在 Azure 文档中确实不清楚。

其次,对于 Azure 事件网格域,您似乎只能通过 Powershell (https://docs.microsoft.com/en-us/cli/azure/eventgrid/domain/topic?view=azure-cli-latest) 创建域主题,而不能在门户中创建。我找不到以任何其他方式为事件域创建主题的明确方法。

我的主题当前设置为:/providers/Microsoft.EventGrid/domains/{tenantname}/topics/refresh。 领域主题是否在首次发布后才出现?

如果能深入了解云事件模式的格式和管理主题,那就太好了!

所以我现在在 Azure 门户中看到了 UI。您只需在域上添加事件订阅,其中一个选项是按主题归档,您可以在其中添加主题。

https://docs.microsoft.com/bs-latn-ba/azure/event-grid/how-to-event-domains?tabs=azurecli#create-topics-and-subscriptions

这里很清楚"There's no separate step to create a topic in a domain."。

其次,我能够为 Cloud Events v1.0 设置 source = topic 并分离出主题。这是我的 CloudEvent 通用 class :

public class CloudEvent<T> where T : class
    {
        [JsonProperty("id")]
        public string EventId
        {
            protected set { }
            get => Guid.NewGuid().ToString();
        }

        [JsonProperty("specversion")]
        public string CloudEventVersion
        {
            protected set { }
            get => "1.0";
        }

        [JsonProperty("type")]
        public string EventType { get; set; }

        [JsonProperty("eventTypeVersion")]
        public string EventTypeVersion
        {
            protected set { }
            get => "1.0";
        }

        [JsonProperty("source")]
        public string Source { get; set; }

        [JsonProperty("subject")]
        public string Subject { get; set; }

        [JsonProperty("time")]
        public string Time
        {
            protected set { }
            get => DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
        }

        [JsonProperty("data")]
        public T Data { get; set; }

    }

我的主题(设置为云事件的来源 属性)是:

/resourceGroups/{rgname}/providers/Microsoft.EventGrid/domains/{domainname}/topics/{topic}

我认为这也可以根据此架构正确设置主题。

https://docs.microsoft.com/en-us/azure/event-grid/cloudevents-schema