Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Versión: 1.5.1
Publicar mensajes en un tema en el servicio de Google Cloud Pub/Sub
En este contenido, se proporciona referencia para configurar y usar la extensión.
Requisitos previos
Antes de utilizar la extensión desde un proxy de API con la política ExtensionExtension, debes hacer lo siguiente:
Crea un tema de Cloud Pub/Sub, como se describe en la Guía de inicio rápido: Usa la consola.
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.Usa GCP Console a fin de generar una clave para la cuenta de servicio.
Usa el contenido del archivo JSON de claves resultante cuando agregues y configures la extensión mediante la referencia de configuración.
Acerca de Cloud Pub/Sub
Cloud Pub/Sub proporciona mensajería asíncrona de varios a varios que separa a los remitentes y 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 recién comienzas 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 extensiones de Cloud Pub/Sub mediante la política ExtensionExtension.
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>
En la siguiente política de Asignar mensaje, se 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 respuesta se muestran en formato 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>
En la siguiente política de Asignar mensaje, se 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 respuesta se muestran en formato 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 de 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 | Predeterminada | Obligatorias |
---|---|---|---|---|
mensaje | El mensaje que se va a publicar. Puedes usar una string simple o estructurar tu mensaje con un JSON que cuente con diseño propio. | String o JSON | Ninguna | Sí |
customAttributes | Atributos personalizados para agregar al mensaje del formulario: "customAttributes": {"attr1": "foo", "attr2": "bar"} . |
Arreglo JSON | Ninguna | No |
Respuesta
JSON que contiene el ID del mensaje tal como se publicó en el tema Por ejemplo:
{"messageId":"165918654986954"}
Referencia de configuración
Usa la siguiente información cuando configures e implementes esta extensión para usarla en proxies de API.
Propiedades comunes de las extensiones
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 | Sí |
packageName |
Nombre del paquete de extensiones proporcionado por Apigee Edge. | Ninguna | Sí |
version |
El número de versión del paquete de extensiones desde el que quieres configurar la extensión. | Ninguna | Sí |
configuration |
Es un valor de configuración específico para la extensión que agregas. Consulta Propiedades para este paquete de extensiones | Ninguna | Sí |
Propiedades de este paquete de extensión
Propiedad | Descripción | Predeterminada | Obligatorias |
---|---|---|---|
topic |
El tema en el que se realizará la publicación. Obtén este valor del servicio de Pub/Sub, por ejemplo, de la consola de GCP para el servicio. Por ejemplo, el nombre del tema podría tener el formato projects/GCP-PROJECT-ID/topics/TOPIC-NAME . |
Ningún contenido de este tipo | 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 Management, es un valor codificado en base64 que se genera a partir del archivo de claves de la cuenta de servicio. | Ningún contenido de este tipo | Sí. |