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

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

Azure 事件方格是一種高度可調整且無伺服器的事件訊息代理程式,您可以用來透過事件整合應用程式。 事件方格會將事件傳遞至支援的事件處理程式,例如 Azure 佇列記憶體。 如需詳細資訊,請參閱 事件處理程式。

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

建立資源群組

事件方格主題是 Azure 資源。 將它們放在 Azure 資源群組中。 資源群組是一個邏輯集合,其中會部署和管理 Azure 資源。

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

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

az group create --name gridResourceGroup --location westus2

啟用事件方格資源提供者

  1. 如果這是您第一次在 Azure 訂用帳戶中使用事件方格,您可能需要註冊 Event Grid 資源提供者。 執行下列命令以註冊提供者:

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

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

    當 registrationState 是 Registered 時,代表已準備好繼續進行。

建立自訂主題

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

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

  1. 指定主題的名稱:

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

    az eventgrid topic create --name $topicname --location westus2 --resource-group gridResourceGroup
    

建立佇列

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

  1. 為 Azure 儲存體帳戶輸入唯一名稱:

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. 執行下列命令以在儲存體中建立儲存體帳戶和佇列 (名為 eventqueue):

    queuename="eventqueue"
    
    az storage account create --name $storagename --resource-group gridResourceGroup --location westus2 --sku Standard_LRS
    key="$(az storage account keys list --account-name $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

訂閱自訂主題

下列範例會訂閱您所建立的自定義主題。 它會傳遞端點佇列的資源標識碼。 利用 Azure CLI,您可以傳遞佇列識別碼做為端點。 端點的格式如下:

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

下列指令碼會取得佇列的儲存體帳戶資源識別碼。 其會建構佇列識別碼,並訂閱事件方格主題。 並將端點類型設為 storagequeue,然後使用端點的佇列識別碼。

執行命令之前,請將到期日 (<yyyy-mm-dd>) 的預留位置取代為年、月和日的實際值。

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname --resource-group gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name mystoragequeuesubscription \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

建立事件訂用帳戶的帳戶必須具有佇列的寫入權限。 訂用帳戶已設定到期日。

如果您使用 REST API 來建立訂用帳戶時,可以傳遞儲存體帳戶的識別碼和佇列的名稱做為個別參數:

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

將事件傳送至自訂主題

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

endpoint=$(az eventgrid topic show --name $topicname --resource-group gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname --resource-group 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 入口網站中的佇列,並注意事件方格會傳送這三個事件至佇列。

顯示佇列中從事件方格接收之訊息清單的螢幕快照。

清除資源

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

az group delete --name gridResourceGroup

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

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