Megosztás a következőn keresztül:


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

  • 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.
  1. 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>"
    
  2. 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

  1. 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
    
  2. 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 registrationStateRegistered é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 vagy EventGrid.
  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. 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

  1. 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)
    
  2. 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

  1. 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-previewvoltak 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
    
  2. 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.

  3. 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.

  1. 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
    
  2. 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.

  1. 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>"
    
  2. 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'"]} '
    
  3. 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
    
  4. 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.