Extensión de Google Cloud Pub/Sub

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
info

Versión: 2.0.0

Publica mensajes en un tema del servicio de Google Cloud Pub/Sub.

En este contenido, se proporciona una referencia para configurar y usar esta extensión.

Requisitos previos

Antes de usar la extensión desde un proxy de API con la política ExtensionCallout, debes hacer lo siguiente:

  1. Crea un tema de Cloud Pub/Sub, como se describe en la Guía de inicio rápido: Uso de la consola.

  2. Una vez que tengas el tema, otorga permiso para publicar en tu tema de Cloud Pub/Sub. Por ejemplo, puedes usar el rol roles/pubsub.publisher para publicar en temas. Para obtener más información sobre los roles de Cloud Pub/Sub, consulta Control de acceso.

  3. Usa GCP Console para generar una clave para la cuenta de servicio.

  4. Usa el contenido del archivo JSON de clave resultante cuando agregues y configures la extensión con la referencia de configuración.

Acerca de Cloud Pub/Sub

Cloud Pub/Sub proporciona mensajería asíncrona de varios a varios que separa los remitentes de los receptores. Cloud Pub/Sub ofrece una mensajería duradera y de baja latencia que ayuda a los desarrolladores a integrar rápidamente sistemas alojados en Google Cloud Platform y de forma externa.

Si estás comenzando a usar Cloud Pub/Sub, consulta las guías de inicio rápido en la documentación de Cloud Pub/Sub.

Ejemplos

En los siguientes ejemplos, se muestra cómo configurar la compatibilidad con las acciones de extensión de Cloud Pub/Sub con la política ExtensionCallout.

Mensaje de texto

En este ejemplo, la acción publish publica un mensaje como una cadena simple en un tema especificado en la configuración de la extensión. La acción publish muestra el ID del mensaje publicado en el tema en el que se publicó y lo escribe en la variable especificada por la etiqueta <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 siguiente política Assign Message usa el valor de la variable que almacena la respuesta de la extensión para asignar la carga útil de la respuesta. El ID del mensaje se almacena en la propiedad messageId de la variable de salida:

<?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>

Los datos de la respuesta se muestran como JSON:

{"messageId":"165918654986954"}

Por lo tanto, el valor de topic.message.messageId es 165918654986954.

Mensaje JSON

En este ejemplo, la acción publish publica un mensaje como JSON en un tema especificado en la configuración de la extensión. La acción publish muestra el ID del mensaje publicado en el tema en el que se publicó y lo escribe en la variable especificada por la etiqueta <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 siguiente política Assign Message usa el valor de la variable que almacena la respuesta de la extensión para asignar la carga útil de la respuesta. El ID del mensaje se almacena en la propiedad messageId de la variable de salida:

<?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>

Los datos de la respuesta se muestran como JSON:

{"messageId":"165918654986954"}

Por lo tanto, el valor de topic.message.messageId es 165918654986954.

Acciones

publish

Publica un mensaje en el tema especificado en la configuración de esta extensión.

Sintaxis

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

Ejemplo de cadena

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

Ejemplo de datos estructurados JSON

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

Ejemplo de atributos personalizados

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

parámetros de solicitud

Parámetro Descripción Tipo Predeterminado Obligatorio
mensaje El mensaje que se publicará. Puedes usar una cadena simple o estructurar tu mensaje con JSON de tu propio diseño. Cadena o JSON Ninguno
customAttributes

Atributos personalizados para agregar al mensaje en el formulario:

"customAttributes": {"attr1": "foo", "attr2": "bar"}.
Arreglo JSON Ninguno No

Respuesta

Es un JSON que contiene el ID del mensaje tal como se publicó en el tema. Por ejemplo:

{"messageId":"165918654986954"}

Referencia de configuración

Usa lo siguiente cuando configures y, luego, implementes esta extensión para usarla en proxies de API.

Propiedades comunes de la extensión

Las siguientes propiedades están presentes para cada extensión.

Propiedad Descripción Predeterminado Obligatorio
name Nombre que asignas a esta configuración de la extensión. Ninguna
packageName Nombre del paquete de extensiones proporcionado por Apigee Edge. Ninguna
version El número de versión del paquete de extensiones desde el que quieres configurar la extensión. Ninguna
configuration Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones Ninguna

Propiedades de este paquete de extensión

Propiedad Descripción Predeterminada Obligatorio
topic Es el tema en el que se publicará el mensaje. Obtén este valor del servicio de Pub/Sub, como de la consola de GCP del servicio. Por ejemplo, el nombre del tema podría tener el formato projects/GCP-PROJECT-ID/topics/TOPIC-NAME. Ninguno Sí.
credentials Cuando se ingresa en la consola de Apigee Edge, este es el contenido de tu archivo de claves de la cuenta de servicio. Cuando se envía a través de la API de administración, es un valor codificado en base64 que se genera a partir del archivo de claves de la cuenta de servicio. Ninguno Sí.