共用方式為


快速入門:使用事件方格和 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"
    

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

建立自訂主題

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

以自訂主題的唯一名稱取代 <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 可協助您:

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