Publier des événements directement

Vous pouvez publier un événement CloudEvents directement sur un bus Eventarc Advanced dans un format compatible à l'aide de Google Cloud CLI ou en envoyant une requête à l'API REST Eventarc Publishing. Vous pouvez également utiliser les bibliothèques clientes Eventarc pour accéder aux API Eventarc à partir d'un langage compatible.

Avant de commencer

Si vous ne l'avez pas déjà fait, activez l'API Eventarc et l'API Eventarc Publishing.

gcloud services enable eventarc.googleapis.com eventarcpublishing.googleapis.com

Publier directement

Le message d'événement que vous publiez directement doit être conforme à la spécification CloudEvents.

gcloud

  1. Ouvrez un terminal.

  2. Vous pouvez publier des événements sur un bus à l'aide de la commande gcloud beta eventarc message-buses publish. Exemple :

    gcloud beta eventarc message-buses publish BUS_NAME \
        --avro-message=AVRO_MESSAGE
    ou
    gcloud beta eventarc message-buses publish BUS_NAME \
        --json-message=JSON_MESSAGE
    ou
    gcloud beta eventarc message-buses publish BUS_NAME \
        --event-data=DATA_PAYLOAD \
        --event-id=EVENT_ID \
        --event-source=EVENT_SOURCE \
        --event-type=EVENT_TYPE \
        --event-attributes=EVENT_ATTRIBUTE

    Remplacez les éléments suivants :

    • BUS_NAME : ID ou identifiant complet du bus sur lequel publier l'événement.

    Vous ne devez utiliser qu'un seul des éléments suivants :

    • AVRO_MESSAGE : message d'événement au format Avro, conformément à cette spécification.
    • JSON_MESSAGE : message d'événement au format JSON, conformément à cette spécification.
    • DATA_PAYLOAD : données d'un événement publié.

    Si vous utilisez l'option --event-data, vous devez également utiliser les options suivantes :

    • EVENT_ID : identifiant de l'événement. Les producteurs d'événements doivent s'assurer que source + id est unique pour chaque événement distinct.
    • EVENT_SOURCE : source d'événement d'un événement publié.
    • EVENT_TYPE : type d'événement lié à l'occurrence d'origine.

    Si vous utilisez l'option --event-data, vous pouvez éventuellement utiliser les options suivantes :

    • EVENT_ATTRIBUTE : attributs d'un événement publié. Vous pouvez répéter l'option --event-attributes pour ajouter d'autres attributs.

      Notez que les événements peuvent inclure un nombre quelconque d'attributs CloudEvents personnalisés supplémentaires avec des noms distincts (également appelés attributs d'extension).

Exemples :

gcloud beta eventarc message-buses publish my-bus \
    --event-data='{"key": "hello-world-data"}' \
    --event-id=hello-world-id-1234 \
    --event-source=hello-world-source \
    --event-type=hello-world-type \
    --event-attributes="datacontenttype=application/json"

gcloud beta eventarc message-buses publish my-bus --json-message='{
    "specversion" : "1.0",
    "type" :"com.example.someevent",
    "source" : "google.cloud.storage.object.v1.finalized",
    "id" : "A234-1234-1234",
    "time" : "2024-04-05T17:31:00Z",
    "bucket" : "bucketName",
    "datacontenttype" : "application/json",
    "data":{"key": "value"}
}'

API REST

Pour publier un événement dans un bus, utilisez la méthode projects.locations.messageBuses.publish.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • Nom complet de la ressource du bus au format projects/PROJECT_ID/locations/LOCATION/messageBuses/BUS_NAME

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de projet Google Cloudpour le projet de bus.
    • LOCATION : région dans laquelle le bus est déployé (par exemple, us-central1).
    • BUS_NAME : nom du bus sur lequel publier l'événement.
  • SPEC_VERSION : version de la spécification CloudEvents utilisée par l'événement (par exemple, 1.0).
  • EVENT_TYPE : type d'événement lié à l'occurrence d'origine.
  • EVENT_SOURCE : source d'événement d'un événement publié.
  • EVENT_ID : identifiant de l'événement. Les producteurs doivent s'assurer que source + id est unique pour chaque événement distinct.
  • CONTENT_TYPE (facultatif) : type de contenu de la valeur data. Si un événement au format JSON ne comporte pas d'attribut datacontenttype, les données sont considérées comme une valeur JSON conforme au type de support application/json.
  • DATA_PAYLOAD (facultatif) : charge utile de l'événement encodée au format multimédia spécifié par datacontenttype et respectant dataschema lorsque ces attributs sont présents.

Corps JSON de la requête :

{
"jsonMessage":
  "{\"specversion\":\"SPEC_VERSION\",
  \"type\":\"EVENT_TYPE\",
  \"source\":\"EVENT_SOURCE\",
  \"id\":\"EVENT_ID\",
  \"datacontenttype\":\"CONTENT_TYPE\",
  \"data\":\"DATA_PAYLOAD\"}"
}

Pour envoyer votre requête, développez l'une des options suivantes :

Si l'opération réussit, le serveur renvoie un code d'état HTTP 200 OK et le corps de réponse vide au format JSON :

200 OK

{}

Étapes suivantes