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 dans un langage compatible.

Le message doit respecter 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 auquel publier l'événement.

    Vous ne devez utiliser qu'un 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'indicateur --event-data, vous devez également utiliser les éléments suivants:

    • 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 associé à l'événement d'origine.

    Si vous utilisez l'indicateur --event-data, vous pouvez également utiliser les éléments suivants:

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

      Notez que les événements peuvent inclure un nombre illimité 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-id=1234 \
    --event-type=event-provider.event.v1.eventType \
    --event-source="//event-provider/event/source" \
    --event-data='{"key": "value"}' \
    --event-attributes=attribute1=value

gcloud beta eventarc message-buses publish my-bus --json-message @- << EOF
{
    "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"}
}
EOF

API REST

Pour publier un événement sur 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 Cloud du projet de bus.
    • LOCATION: région dans laquelle le bus est déployé (par exemple, us-central1).
    • BUS_NAME: nom du bus auquel 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 associé à 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, on suppose que les données sont une valeur JSON conforme au type de média application/json.
  • DATA_PAYLOAD (facultatif): charge utile de l'événement encodée dans le format multimédia spécifié par datacontenttype et conforme à 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 la requête aboutit, le serveur renvoie un code d'état HTTP 200 OK et le corps de réponse vide au format JSON:

200 OK

{}

Étape suivante