Közzététel névtértémakörökben és események felhasználása az Azure Event Gridben
Ez a cikk az események közzétételére, fogadására és nyugtázására használt curl
Bash Shell-paranccsal történő lekéréses kézbesítés gyors ismertetését ismerteti. Az Event Grid-erőforrások cli-parancsokkal jönnek létre. Ez a cikk alkalmas a lekéréses kézbesítés funkció gyors tesztelésére. Az adatsík SDK-jait használó mintakódokat a .NET-ben vagy a Java-mintákban találhatja meg. A Java esetében a mintakódot két cikkben biztosítjuk: események közzététele és események fogadása rövid útmutatókban.
A lekéréses kézbesítési modellel kapcsolatos további információkért tekintse meg a fogalmakat és a lekéréses kézbesítés áttekintését ismertető cikkeket.
If you don't have an Azure subscription, create an Azure free account before you begin.
Előfeltételek
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ez a cikk az Azure CLI 2.0.70-es vagy újabb verzióját igényli. Az Azure Cloud Shell használata esetén a legújabb verzió már telepítve van.
Erőforráscsoport létrehozása
Hozzon létre egy Azure-erőforráscsoportot az az group create paranccsal. Ez az erőforráscsoport a cikkben létrehozott összes erőforrást tartalmazza.
A Cloud Shell parancsok futtatásának általános lépései a következők:
- Válassza a Cloud Shell megnyitása lehetőséget egy Azure Cloud Shell-ablak megtekintéséhez a jobb oldali panelen.
- Másolja ki a parancsot, és illessze be az Azure Cloud Shell ablakába.
- A parancs futtatásához nyomja le az ENTER billentyűt.
Deklaráljon egy változót egy Azure-erőforráscsoport nevének tárolásához. Adja meg az erőforráscsoport nevét egy tetszés szerinti értékre cserélve
<your-resource-group-name>
.resource_group="<your-resource-group-name>"
Hozzon létre egy erőforráscsoportot. Módosítsa a helyet a megfelelőnek látja.
az group create --name $resource_group --location eastus
Az Event Grid-erőforrás-szolgáltató engedélyezése
Ha korábban nem használta az Event Gridet az Azure-előfizetésében, előfordulhat, hogy regisztrálnia kell az Event Grid-erőforrás-szolgáltatót. A szolgáltató regisztrálásához futtassa az alábbi parancsot:
az provider register --namespace Microsoft.EventGrid
Eltarthat egy ideig, amíg a regisztráció befejeződik. Az állapot ellenőrzéséhez futtassa a következő parancsot:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
Ha a
registrationState
Registered
értékű, készen áll a folytatásra.
Névtér létrehozása
Az Event Grid-névtér egy felhasználó által definiált végpontot biztosít, amelyre az eseményeket közzéteheti. Az alábbi példa létrehoz egy névteret az erőforráscsoportban a Bash használatával az Azure Cloud Shellben. A névtér nevének egyedinek kell lennie, mert egy DNS-bejegyzés része. A névtérnévnek meg kell felelnie a következő szabályoknak:
- 3–50 karakter hosszúságúnak kell lennie.
- Regionálisan egyedinek kell lennie.
- Csak az engedélyezett karakterek a-z, A-Z, 0-9 és -
- Nem szabad olyan fenntartott kulcsszavas előtagokkal kezdeni, mint az
Microsoft
,System
vagyEventGrid
.
Deklaráljon egy változót az Event Grid-névtér nevének tárolásához. Adja meg a névtér nevét egy tetszés szerinti értékre cserélve
<your-namespace-name>
.namespace="<your-namespace-name>"
Hozzon létre egy névteret. Előfordulhat, hogy módosítani szeretné azt a helyet, ahol az üzembe lett helyezve.
az eventgrid namespace create -g $resource_group -n $namespace -l eastus
Névtértéma létrehozása
Hozzon létre egy témakört, amely a névtérvégponton közzétett összes esemény tárolására szolgál.
Deklaráljon egy változót a névtértéma nevének tárolásához. Adja meg a névtér témakörének nevét egy tetszés szerinti értékre cserélve
<your-topic-name>
.topic="<your-topic-name>"
A névtér témakörének létrehozása:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Esemény-előfizetés létrehozása
Hozzon létre egy esemény-előfizetést, amely várólistára állítja a kézbesítési módot, amely támogatja a lekéréses kézbesítést. További információ az összes konfigurációs beállításról: a legújabb Event Grid vezérlősík REST API.
Deklaráljon egy változót, amely egy esemény-előfizetés nevét tárolja a névtér témakörében. Adja meg az esemény-előfizetés nevét egy tetszés szerinti értékre cserélve
<your-event-subscription-name>
.event_subscription="<your-event-subscription-name>"
Hozzon létre egy esemény-előfizetést a névtér témaköréhez:
az eventgrid namespace topic event-subscription create -g $resource_group --topic-name $topic -n $event_subscription --namespace-name $namespace --delivery-configuration "{deliveryMode:Queue,queue:{receiveLockDurationInSeconds:300,maxDeliveryCount:4,eventTimeToLive:P1D}}"
Események küldése a témakörbe
Most küldjön egy mintaeseményt a névtér témakörébe az ebben a szakaszban ismertetett lépések végrehajtásával.
Névtér hozzáférési kulcsok listázása
Kérje le a létrehozott névtérhez társított hozzáférési kulcsokat. Az egyik használatával hitelesítheti magát az események közzétételekor. A kulcsok listázásához először a teljes névtér erőforrás-azonosítóját kell megadnia. A lekéréshez futtassa a következő parancsot:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Kérje le az első kulcsot a névtérből:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Esemény közzététele
Kérje le a névtér állomásnevét. A névtér HTTP-végpontjának megírására használja, amelybe az eseményeket küldi. A következő műveletek először az API-verzióval
2023-06-01-preview
voltak elérhetők.publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
Hozzon létre egy CloudEvents-kompatibilis mintaeseményt:
event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
Az
data
elem az esemény hasznos adatai. Bármilyen, megfelelően formált JSON megadható ebben a mezőben. Az eseményben használható tulajdonságokról (más néven környezetattribútumokról) a CloudEvents specifikációiban talál további információt.A CURL használatával küldje el az eseményt a témakörnek. A CURL egy olyan segédprogram, amely HTTP-kéréseket küld.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Az esemény fogadása
Eseményeket fogad az Event Gridtől egy esemény-előfizetésre hivatkozó végpont használatával.
A végpont írása a következő parancs futtatásával:
receive_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:receive?api-version=2023-06-01-preview
Küldjön egy kérelmet az esemény felhasználására:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" $receive_operation_uri
Esemény nyugtázása
Miután megkapta az eseményt, átadja az eseményt az alkalmazásnak feldolgozás céljából. Miután sikeresen feldolgozta az eseményt, már nincs szüksége arra, hogy az esemény szerepeljen az esemény-előfizetésében. Ha azt szeretné, hogy az Event Grid törölje az eseményt, a fogadási művelet válaszában kapott zárolási jogkivonatával nyugtázza azt.
Az előző lépésben egy tulajdonsággal rendelkező
lockToken
objektumot tartalmazóbrokerProperties
választ kellett volna kapnia. Másolja ki a zárolási jogkivonat értékét, és állítsa be egy környezeti változóra:lockToken="<paste-the-lock-token-here>"
Most hozza létre a nyugtázási művelet hasznos adatait, amely megadja a nyugtázni kívánt esemény zárolási jogkivonatát.
acknowledge_request_payload=' { "lockTokens": ["'$lockToken'"]} '
Folytassa a sztring összeállítását az URI nyugtázási művelettel:
acknowledge_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic/eventsubscriptions/$event_subscription:acknowledge?api-version=2023-06-01-preview
Végül küldjön egy kérést a kapott esemény nyugtázására:
curl -X POST -H "Content-Type: application/json" -H "Authorization:SharedAccessKey $key" -d "$acknowledge_request_payload" $acknowledge_operation_uri
Ha a nyugtázási műveletet a zárolási jogkivonat lejárata előtt hajtja végre (az esemény-előfizetés létrehozásakor beállított 300 másodperc), a következő példához hasonló válasznak kell megjelennie:
{"succeededLockTokens":["CiYKJDQ4NjY5MDEyLTk1OTAtNDdENS1BODdCLUYyMDczNTYxNjcyMxISChDZae43pMpE8J8ovYMSQBZS"],"failedLockTokens":[]}
Következő lépések
A lekéréses kézbesítési modellről további információt a lekéréses kézbesítés áttekintésében talál.