Extension Google Cloud Pub/Sub

Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X.
info

Version: 2.0.0

Publiez des messages dans un sujet du service Google Cloud Pub/Sub.

Ce contenu fournit une documentation de référence pour configurer et utiliser cette extension.

Prérequis

Avant d'utiliser l'extension à partir d'un proxy d'API à l'aide de la règle ExtensionCallout, vous devez:

  1. Créez un sujet Cloud Pub/Sub, comme décrit dans le guide de démarrage rapide: Utiliser la console.

  2. Une fois que vous avez le sujet, accordez l'autorisation de publier dans votre sujet Cloud Pub/Sub. Par exemple, vous pouvez utiliser le rôle roles/pubsub.publisher pour publier dans des sujets. Pour en savoir plus sur les rôles Cloud Pub/Sub, consultez la page Contrôle des accès.

  3. Générez une clé pour le compte de service à l'aide de la console GCP.

  4. Utilisez le contenu du fichier JSON de clé généré lorsque vous ajoutez et configurez l'extension à l'aide de la référence de configuration.

À propos de Cloud Pub/Sub

Cloud Pub/Sub fournit une messagerie asynchrone de type plusieurs à plusieurs, qui dissocie les expéditeurs et les destinataires. Cloud Pub/Sub fournit une messagerie durable à faible latence qui aide les développeurs à intégrer rapidement les systèmes hébergés sur Google Cloud Platform et en externe.

Si vous débutez avec Cloud Pub/Sub, consultez les guides de démarrage rapide dans la documentation Cloud Pub/Sub.

Exemples

Les exemples suivants montrent comment configurer la prise en charge des actions d'extension Cloud Pub/Sub à l'aide de la règle ExtensionCallout.

SMS

Dans cet exemple, l'action publish publie un message sous forme de chaîne simple sur un sujet spécifié dans la configuration de l'extension. L'action publish renvoie l'ID du message publié dans le sujet auquel il a été publié et l'écrit dans la variable spécifiée par la balise <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : "My test message."
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

La règle Assign Message suivante utilise la valeur de la variable stockant la réponse de l'extension pour attribuer la charge utile de la réponse. L'ID du message est stocké dans la propriété messageId de la variable de sortie:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

Les données de réponse sont renvoyées au format JSON:

{"messageId":"165918654986954"}

Par conséquent, la valeur de topic.message.messageId est 165918654986954.

Message JSON

Dans cet exemple, l'action publish publie un message au format JSON dans un sujet spécifié dans la configuration de l'extension. L'action publish renvoie l'ID du message publié dans le sujet auquel il a été publié et l'écrit dans la variable spécifiée par la balise <Output>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Publish-Message">
    <DisplayName>Publish Message</DisplayName>
    <Connector>cloud-pub-sub-extension-example</Connector>
    <Action>publish</Action>
    <Input><![CDATA[
      {
          "message" : { "info" : "My test message" }
      }
    ]]></Input>
    <Output>topic.message</Output>
</ConnectorCallout>

La règle Assign Message suivante utilise la valeur de la variable stockant la réponse de l'extension pour attribuer la charge utile de la réponse. L'ID du message est stocké dans la propriété messageId de la variable de sortie:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Topic-Message-ID">
    <DisplayName>Get Topic Message ID</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{topic.message.messageId}</Payload>
    </Set>
</AssignMessage>

Les données de réponse sont renvoyées au format JSON:

{"messageId":"165918654986954"}

Par conséquent, la valeur de topic.message.messageId est 165918654986954.

Actions

publier

Publie un message dans le sujet spécifié dans la configuration de cette extension.

Syntaxe

<Action>publish</Action>
<Input><![CDATA[{
  "message" : "message-to-publish" | JSON-structured-data,
  "customAttributes": JSON-array
}]]></Input>

Exemple de chaîne

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : "My test message."
  }
]]></Input>

Exemple de données structurées au format JSON

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" }
  }
]]></Input>

Exemple d'attributs personnalisés

<Action>publish</Action>
<Input><![CDATA[
  {
      "message" : { "info" : "My test message" },
      "customAttributes": {"attr1": "foo", "attr2": "bar"}
  }
]]></Input>

Paramètres de requête

Paramètre Description Type Valeur par défaut Obligatoire
message Message à publier. Vous pouvez utiliser une chaîne simple ou structurer votre message avec un code JSON de votre conception. Chaîne ou JSON Aucun Oui
customAttributes

Attributs personnalisés à ajouter au message dans le formulaire:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Tableau JSON Aucun Non

Réponse

JSON contenant l'ID du message tel qu'il a été publié sur le sujet. Exemple :

{"messageId":"165918654986954"}

Documentation de référence sur la configuration

Utilisez les éléments suivants lorsque vous configurez et déployez cette extension pour l'utiliser dans des proxys d'API.

Propriétés d'extension courantes

Les propriétés suivantes sont présentes pour chaque extension.

Propriété Description Par défaut Obligatoire
name Nom que vous attribuez à cette configuration de l'extension. Aucune Oui
packageName Nom du package d'extension tel qu'indiqué par Apigee Edge. Aucune Oui
version Numéro de version du package d'extension à partir duquel vous configurez une extension. Aucune Oui
configuration Valeur de configuration spécifique à l'extension que vous ajoutez. Consultez Propriétés de ce package d'extension. Aucune Oui

Propriétés de ce package d'extension

Propriété Description Par défaut Obligatoire
topic Sujet à publier. Obtenez cette valeur à partir du service Pub/Sub, par exemple à partir de la console GCP du service. Par exemple, le nom du sujet peut prendre la forme projects/GCP-PROJECT-ID/topics/TOPIC-NAME. Aucune. Oui.
credentials Lorsque vous le saisissez dans la console Apigee Edge, il s'agit du contenu de votre fichier de clé de compte de service. Lorsqu'il est envoyé via l'API de gestion, il s'agit d'une valeur encodée en base64 générée à partir du fichier de clé du compte de service. Aucune. Oui.