共用方式為


快速入門:使用事件方格和 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. 為 Azure 儲存體帳戶輸入唯一名稱:

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

    queuename="eventqueue"
    
    az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
    key="$(az storage account keys list -n $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 -g 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 -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 入口網站中的佇列,並注意事件方格會傳送這三個事件至佇列。

顯示佇列中從事件方格所接收訊息清單的螢幕擷取畫面。

清除資源

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

az group delete --name gridResourceGroup

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

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