分享方式:


快速入門:使用事件方格和 Azure CLI 將自訂事件路由傳送至事件中樞

Azure 事件方格是一種高度可調整且無伺服器的事件訊息代理程式,您可以用來透過事件整合應用程式。 事件方格會將事件傳遞至支援的事件處理常式,而 Azure 事件中樞就是其中之一。

在本快速入門中,您會使用 Azure CLI 來建立事件方格自訂主題,以及該主題的事件中樞訂用帳戶。 接著,您會將範例事件傳送至自訂主題,並確認這些事件已傳遞至事件中樞。

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

建立資源群組

Event Grid 主題為 Azure 資源,必須放入 Azure 資源群組中。 資源群組是在其中部署與管理 Azure 資源的邏輯集合。

使用 az group create 命令來建立資源群組。 下列範例會在 westus2 位置建立名為 gridResourceGroup 的資源群組。

選取 [開啟 Cloud Shell],以開啟右側窗格中的 [Azure Cloud Shell]。 選取 [複製] 按鈕以複製命令、貼到 Cloud Shell 中,然後選取 Enter 鍵即可執行命令。

az group create --name gridResourceGroup --location westus2

啟用事件方格資源提供者

  1. 如果您先前在 Azure 訂用帳戶中從未使用過事件方格,可能必須註冊事件方格資源提供者。 執行下列命令以註冊提供者:

    az provider register --namespace Microsoft.EventGrid
    
  2. 可能需要一點時間才能完成註冊。 若要檢查狀態,請執行下列命令:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    registrationStateRegistered 時,代表已準備好繼續進行。

建立自訂主題

事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。 下列範例可在您的資源群組中建立自訂主題。

以自訂主題的唯一名稱取代 <TOPIC NAME>。 事件方格主題名稱必須是唯一的,因為網域名稱系統 (DNS) 項目會表示該名稱。

  1. 指定主題的名稱:

    topicname="<TOPIC NAME>"
    
  2. 執行下列命令來建立主題:

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

建立事件中樞

訂閱自訂主題之前,請建立事件訊息的端點。 您將建立用來收集事件的事件中樞。

  1. 指定事件中樞命名空間的唯一名稱:

    namespace="<EVENT HUBS NAMESPACE NAME>"
    
  2. 執行下列命令以建立事件中樞命名空間,以及在該命名空間中名為 demohub 的事件中樞:

    hubname=demohub
    
    az eventhubs namespace create --name $namespace --resource-group gridResourceGroup
    az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
    

訂閱自訂主題

您可訂閱事件方格主題,告知事件方格您想要追蹤的事件。下列範例可訂閱您所建立的自訂主題,以及傳遞端點的事件中樞資源識別碼。 端點的格式如下:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>

下列指令碼會取得事件中樞的資源識別碼,並訂閱事件方格主題。 它會將端點類型設為 eventhub,然後使用端點的事件中樞識別碼。

hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name subtoeventhub \
  --endpoint-type eventhub \
  --endpoint $hubid

建立事件訂用帳戶的帳戶必須具有事件中樞的寫入權限。

將事件傳送至您的自訂主題

觸發事件以查看事件方格如何將訊息散發至您的端點。 首先,取得自訂主題的 URL 和金鑰:

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

為簡化這篇文章,您可使用要傳送至自訂主題的範例事件資料。 一般而言,應用程式或 Azure 服務就會傳送事件資料。

cURL 工具會傳送 HTTP 要求。 在本文中,您會使用 cURL 將事件傳送到自訂主題。 下列範例會將三個事件傳送至事件方格主題:

for i in 1 2 3
do
   event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

在 Azure 入口網站中,事件中樞命名空間的 [概觀] 頁面上,請注意事件方格會將這三個事件傳送至事件中樞。 您會在 demohub 事件中樞執行個體頁面上的 [概觀] 上看到相同的圖表。

顯示入口網站頁面的螢幕擷取畫面,內送訊息計數為 3。

一般而言,您會建立從事件中樞擷取事件訊息的應用程式。 如需詳細資訊,請參閱

清除資源

如果您打算繼續使用此事件,請勿清除您在本文中建立的資源。 否則,請使用下列命令來刪除資源:

az group delete --name gridResourceGroup

您現在知道如何建立主題和事件訂閱,深入了解 Event Grid 可協助您:

如需了解如何使用各種程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件,請參閱下列範例: