分享方式:


了解用於管理事件方格主題的事件網域

事件網域為數千個與相同應用程式相關的個別主題提供端點。 您可以將它視為可含有數千個個別主題的中繼主題。 它為網域中所有主題提供一個發佈端點。 發佈事件時,發行者必須在想要發佈的網域中指定目標主題。 發行者可以傳送陣列或一批事件,其中事件會傳送至網域中的不同主題。 如需詳細資料,請參閱將事件發佈至事件網域 (部分機器翻譯) 一節。

網域也會為您提供對每個主題的驗證和授權控制權,讓您能夠分割租用戶。 本文說明如何使用事件網域,來管理自訂事件到您各種不同商業組織、客戶或應用程式的流程。 使用事件網域:

  • 大規模管理多租使用者事件驅動架構。
  • 管理您的驗證和授權。
  • 分割您的主題,而不個別管理每個主題。
  • 避免個別發行到您的每個主題端點。

注意

事件網域並非用來支援廣播案例,其中事件會傳送至網域,而網域中的每個主題都會收到事件的複本。 發佈事件時,發行者必須在想要發佈的網域中指定目標主題。 如果發行者想要將相同的事件承載發佈至網域中的多個主題,發行者必須複製事件承載、變更主題名稱,並使用網域端點來個別或批次將它們發佈至事件方格。

使用案例範例

說明事件網域最容易的方式是使用範例。 假設您經營 Contoso Construction Machinery,您在那裡製造牽引機、挖掘設備及其他重型機械。 在業務營運的過程中,您會為客戶推送有關設備維護、系統健康情況、合約更新等即時資訊。 此資訊全都會傳送到各種端點,包括您的應用程式、客戶端點,以及客戶已設定的其他基礎結構。

事件網域可讓您將 Contoso 建構機械模型化為單一事件方格實體。 您的每位客戶都會表示為網域內的一個主題。 驗證和授權是使用 Microsoft Entra ID 來處理。 每位客戶都可訂閱他們的主題,並將他們的事件傳遞給他們。 透過事件網域的受控存取,確保他們只能存取自己的主題。

它也會為您提供單一端點,讓您可將所有客戶事件發行到其中。 事件方格將負責確保每個主題只知道範圍為其租用戶的事件。

顯示使用事件方格網域的範例使用案例的影像。

存取管理

使用網域,您就能透過 Azure 角色型存取控制 (Azure RBAC),微調對每個主題的授權和驗證控制。 您可以使用這些角色,將應用程式中的每個租用戶限制為只有您想要為其授與存取權的主題。 事件網域中 Azure RBAC 的運作方式,與受控存取控制在事件方格和 Azure 其餘部分中的運作方式相同。 使用 Azure RBAC,在事件網域中建立和強制執行自訂角色定義。

內建角色

事件方格具有兩個內建角色定義,可使 Azure RBAC 更容易與事件網域搭配運作。 這些角色為 EventGrid EventSubscription 參與者EventGrid EventSubscription 讀者。 您可以將這些角色指派給需要訂閱您事件網域中之主題的使用者。 您將角色指派的範圍僅限定為使用者需要訂閱的主題。 如需這些角色的詳細資訊,請參閱適用於事件方格的內建角色

訂閱主題

針對事件網域內的主題訂閱事件,與在自訂主題上建立事件訂閱或訂閱來自 Azure 服務的事件一樣。

重要

網域主題會被視為事件方格中自動管理的資源。 您可以在網域範圍內建立事件訂用帳戶,而不需建立網域主題。 在此情況下,事件方格會代表您自動建立網域主題。 當然,您仍然可以選擇手動建立網域主題。 此行為讓您在處理大量網域主題時不需擔心資源減少。 刪除網域主題的最後一個訂用帳戶時,也會刪除該網域主題,而不論該網域主題是手動建立還是自動建立。

網域範圍訂用帳戶

事件網域也允許用於網域範圍訂用帳戶。 不論事件傳送到哪個主題,事件網域上的事件訂閱都會收到已傳送到網域的所有事件。 網域範圍訂用帳戶對於管理和稽核用途非常實用。

發行到事件網域

當您建立事件網域時,您會收到類似於您是否已在事件方格中建立主題的發行端點。 若要將事件發佈到事件網域中的任何主題,請以您針對自訂主題所使用的相同方式來將事件推送到網域的端點。 唯一的差別是必須指定您想要將事件傳遞到其中的主題。 例如,發行下列事件陣列會將 "id": "1111" 的事件傳送到主題 foo,同時將 "id": "2222" 的事件傳送到主題 bar

使用雲端事件結構描述時,請將網域中事件方格主題的名稱指定為 source 屬性的值。 在下列範例中,source 屬性會設定為第一個事件的 foo 並設定為第二個事件的 bar

如果您想要使用不同的欄位來指定網域中的預期主題,請在建立網域時指定輸入結構描述對應。 例如,如果您使用 REST API,請使用 properties.inputSchemaMapping 屬性,將該欄位對應至 properties.topic。 如果您使用的是 .NET SDK,請使用 EventGridJsonInputSchemaMapping。 其他 SDK 也支援結構描述對應。

[{
  "source": "foo",
  "id": "1111",
  "type": "maintenanceRequested",
  "subject": "myapp/vehicles/diggers",
  "time": "2018-10-30T21:03:07+00:00",
  "data": {
    "make": "Contoso",
    "model": "Small Digger"
  },
	"specversion": "1.0"
},
{
  "source": "bar",
  "id": "2222",
  "type": "maintenanceCompleted",
  "subject": "myapp/vehicles/tractors",
  "time": "2018-10-30T21:04:12+00:00",
  "data": {
    "make": "Contoso",
    "model": "Big Tractor"
  },
	"specversion": "1.0"
}]

事件網域會為您處理發行到主題。 不要將事件個別發行到您所管理的每個主題,您可以改為將所有事件發行到網域端點。 事件方格負責確保會將每個事件傳送到正確的主題。

定價

事件網域所使用的作業定價會與事件方格中所有其他功能所使用的一樣。 作業在事件網域中的運作方式,與它們在自訂主題中所做的一樣。 每個對事件網域的事件輸入都是一項作業,而每次對於事件的傳遞嘗試都是一項作業。

下一步

若要了解如何設定事件網域、建立主題、建立事件訂閱,以及發行事件,請參閱管理事件網域