在本快速入門中,您會使用 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
啟用事件方格資源提供者
如果這是您第一次在 Azure 訂用帳戶中使用事件方格,您可能需要註冊 Event Grid 資源提供者。 執行下列命令以註冊提供者:
az provider register --namespace Microsoft.EventGrid可能需要一點時間才能完成註冊。 若要檢查狀態,請執行下列命令:
az provider show --namespace Microsoft.EventGrid --query "registrationState"當
registrationState是Registered時,代表已準備好繼續進行。
建立自訂主題
事件方格主題會提供使用者定義的端點,作為您發佈事件的目的地。 下列範例可在您的資源群組中建立自訂主題。
以自訂主題的唯一名稱取代 <TOPIC NAME>。 事件方格主題名稱必須是唯一的,因為網域名稱系統 (DNS) 項目會表示該名稱。
指定主題的名稱:
topicname="<TOPIC NAME>"執行下列命令來建立主題:
az eventgrid topic create --name $topicname --location westus2 --resource-group gridResourceGroup
建立佇列
訂閱自訂主題之前,請建立事件訊息的端點。 您將建立佇列來收集事件。
為 Azure 儲存體帳戶輸入唯一名稱:
storagename="<STORAGE ACCOUNT NAME>"執行下列命令以在儲存體中建立儲存體帳戶和佇列 (名為
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 可協助您:
- 關於 Event Grid
- 將 Azure Blob 儲存體事件路由傳送至自訂 Web 端點
- 使用 Azure Event Grid 和 Logic Apps 監視虛擬機器變更
- 將事件中樞擷取的數據從 Azure 記憶體遷移至 Azure Synapse Analytics
如要了解如何使用各種程式設計語言,將事件發佈至事件方格,以及從事件方格取用事件,請參閱下列範例: