共用方式為


Azure 事件方格命名空間概念

本文將介紹與命名空間主題相關聯的主要概念和功能。

事件

事件是完整說明系統中發生內容的最小量資訊。 我們通常會將事件稱為離散事件,因為代表了系統的離散、獨立事實,提供可行的深入解析。 每個事件都有一般資訊,例如:事件的 source、事件發生的 time,以及唯一識別碼。 每個事件也有 type,這通常是描述事件用途公告類型的唯一標識碼。

例如,在 Azure 儲存體中建立新檔案的相關事件含有該檔案相關詳細資料,例如 lastTimeModified 值。 「事件中樞」事件含有已擷取檔案的 URL。 「訂單」微服務中新訂單的相關事件可能會有 orderId 屬性,以及訂單狀態表示法的 URL 屬性。 事件類型的幾個範例包括:com.yourcompany.Orders.OrderCreatedorg.yourorg.GeneralLedger.AccountChangedio.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached

以下是範例事件:

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

另一種事件

使用者社群也會將「事件」稱為指攜帶資料點的訊息,例如單一裝置讀取或單擊 Web 應用程式頁面。 這種事件通常會在時間範圍中分析,以產生深入解析並採取動作。 在事件方格的文件中,我們會將這類事件稱為 [資料點]、[串流資料],或單純稱為 [遙測]。 在其他類型的訊息中,這類事件會與「事件方格的訊息佇列遙測傳輸」(MQTT) 訊息代理程式功能搭配使用。

支援 CloudEvents

事件方格命名空間主題接受符合雲端原生運算基金會 (CNCF) 開放式標準 CloudEvents 1.0 規格的事件,意即使用 JSON 格式HTTP 通訊協定繫結。 CloudEvent 是一種包含通訊內容 (稱為事件資料) 和相關中繼資料的訊息。 事件導向結構中的事件資料通常會帶有宣告系統狀態變更的資訊。 CloudEvents 中繼資料是由一組屬性所組成,這些屬性會提供訊息的內容相關資訊,例如來源位置 (來源系統)、其類型等等。

如需詳細資訊,請參閱 CloudEvents 結構描述的支援

發行者

發行者是指將事件傳送至事件方格的應用程式。 可以是產生事件所在的相同應用程式 (事件來源)。 使用命名空間主題時,您可以從自己的應用程式發佈事件。

事件來源

事件來源是事件發生的位置。 每個事件來源都支援一或多個事件類型。 例如,您的應用程式是系統定義的自訂事件來源。 使用命名空間主題時,支援的事件來源是您自己的應用程式。

命名空間

事件方格命名空間是下列資源的管理容器:

資源 支援的通訊協定
命名空間主題 HTTP
主題空間 MQTT
用戶端 MQTT
用戶端群組 MQTT
CA 憑證 MQTT
權限繫結 MQTT

有了 Azure 事件方格命名空間,您即可將相關資源分組在一起,並以 Azure 訂用帳戶中單一單位的形式進行管理。 這可為您提供唯一的完整網域名稱 (FQDN)。

命名空間會公開兩個端點:

  • 使用命名空間主題支援一般傳訊要求的 HTTP 端點。
  • MQTT 端點,適用於使用 MQTT 的 IoT 傳訊或解決方案。

命名空間也提供 DNS 整合的網路端點, 另也提供一系列的存取控制和網路整合管理功能,例如 IP 輸入篩選和私人連結。 此外,也是受控識別的容器,用於命名空間中包含的資源。

以下是命名空間的更多要點:

  • 命名空間是具有 tagslocation 屬性的追蹤資源,一旦建立之後,就可以在 resources.azure.com 中找到。
  • 命名空間的名稱長度可以是 3-50 個字元。 可以包含英數字元和連字號 (-),但不能包含空格。
  • 此名稱在每個區域中必須是唯一的。

輸送量單位

輸送量單位 (TU) 會定義命名空間中輸入和輸出的事件速率容量。 如需詳細資訊,請參閱 Azure 事件方格配額和限制

主題

主題會保存已發佈至事件方格的事件。 您通常會針對相關事件的集合使用主題資源。 我們通常會將命名空間內的主題稱為命名空間主題

命名空間主題

命名空間主題是在事件方格命名空間內建立的主題。 您的應用程式會將事件發佈至 HTTP 命名空間端點,以指定透過邏輯方式包含已發布事件的命名空間主題。 在設計應用程式時,您必須決定要建立多少個主題。 對於相對大型的解決方案,請為每個類別的相關事件建立命名空間主題。 例如,請考慮管理使用者帳戶的應用程式,以及關於客戶訂單的另一個應用程式。 不太可能所有事件訂閱者都想要來自這兩個應用程式的事件。 若要區分疑慮,請建立兩個命名空間主題:每個應用程式各一個主題。 讓事件消費者根據其需求訂閱主題。 針對小型解決方案,您可能會偏好將所有事件傳送至單一主題。

命名空間主題支援提取傳遞推送傳遞。 請參閱使用提取或推送傳遞的時機,以協助您決定推送傳遞是否為符合您需求的正確方法。

事件訂閱

事件訂用帳戶是與單一主題相關聯的設定資源。 除此之外,您可以使用事件訂用帳戶來設定事件選取準則,以定義主題中可用事件總數集的訂閱者適用事件集合。 您可以根據訂閱者的需求來篩選事件。 例如,您可以依其事件類型來篩選事件。 如果使用 JSON 物件作為 data 屬性的值,您也可以定義事件資料屬性的篩選準則。 如需資源屬性的詳細資訊,請在事件方格 REST API 中尋找控制平面作業。

顯示主題和相關聯事件訂閱的圖表。

如需建立命名空間主題訂用帳戶的範例,請參閱使用 CLI 使用命名空間主題發佈和取用訊息

注意

相較於用於自訂、網域、合作夥伴和系統主題 (事件網格基本) 的事件訂用帳戶,命名空間主題下的事件訂用帳戶具有簡化的資源模型。 如需詳細資訊,請參閱建立、檢視及受控事件訂閱

提取傳遞

您的應用程式可透過提取傳遞連接至事件方格,以使用佇列型語意讀取訊息。 當應用程式連接到事件方格以取用事件時,會控管事件耗用量率及其時間。 取用者應用程式也可以在連接到事件方格時使用私人端點,以使用私人 IP 空間讀取事件。

提取傳遞支援下列作業,以讀取訊息和控管訊息狀態:接收認可發行拒絕,以及更新鎖定。 如需詳細資訊,請參閱提取傳遞概觀

使用提取傳遞接收事件時的資料圖形

當使用提取傳遞來傳遞事件時,事件網格會包含物件陣列,其中包括 eventbrokerProperties 物件。 event 屬性的值是以結構化內容模式傳遞的 CloudEvent。 brokerProperties 物件包含與傳遞 CloudEvent 相關聯的鎖定權杖。 下列 json 物件是傳回兩個事件的接收作業回應範例:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

推送傳遞

使用推送傳遞時,事件方格會將事件傳送至推送事件訂閱 (傳遞模式) 中所設定的目的地。 如果目的地無法接收事件,會提供強固的重試邏輯。

重要

事件方格命名空間的推送傳遞目前支援以 Azure 事件中樞作為目的地。 在未來,事件方格命名空間將支援更多目的地,包括事件方格基本支援的所有目的地。

事件中樞事件遞送

事件方格會使用事件中樞的 SDK,透過 AMQP 將事件傳送至事件中樞。 事件會以位元組陣列的形式傳送,陣列中的每個元素都包含 CloudEvent。

推送和提取遞送

事件方格支援使用 HTTP 的推送和提取事件傳遞。 您可以透過推送傳遞,在事件訂閱、Webhook 或 Azure 服務中定義目的地,而事件方格會將事件傳送至該目的地。 透過提取傳遞,訂閱者應用程式會連接到事件方格以取用事件。 事件方格命名空間中的主題支援提取傳遞。

重要

事件中樞支援作為命名空間主題訂閱的目的地。 在即將推出的版本中,事件方格命名空間將支援事件方格基本中目前適用的所有目的地,以及其他目的地。

顯示推送傳遞和提取傳遞的高階圖表,其中包含涉及的資源種類。

使用推送傳遞與提取傳遞的時機

以下是一般指導方針,可協助您決定何時使用提取或推送傳遞。

提取傳遞

  • 您需要完整控管接收事件的時機。 例如,您的應用程式可能不會一直處於運作狀態、不夠穩定,或者您在特定時間處理資料。
  • 您需要完全控管事件取用。 例如,取用者應用程式中的下游服務或層級發生問題,導致您無法處理事件。 在此情況下,提取傳遞 API 可讓取用者應用程式將已讀取的事件釋回訊息代理程式,以便稍後傳遞。
  • 您想要在接收事件時使用私人連結,這只能透共提取傳遞使用,而無法透過推送傳遞使用。
  • 您無法公開端點並使用推送傳遞,但您可以連線至事件方格來取用事件。

推送傳遞

  • 您想要避免持續輪詢,以判斷系統狀態變更是否已發生。 您選擇在事件狀態變更時,使用事件方格將事件傳送給您。
  • 您有無法進行輸出呼叫的應用程式。 例如,您的組織可能會擔心資料外流。 不過,您的應用程式可以透過公用端點接收事件。

下一步