Simple Message Queue (formerly MNS) Los temas de Simple Message Queue (anteriormente MNS) pueden actuar como orígenes de eventos e integrarse con EventBridge y Function Compute. Un activador de tema de Simple Message Queue (formerly MNS) ejecuta automáticamente la función asociada cuando se envía un mensaje nuevo al tema de Simple Message Queue (formerly MNS). Esto le permite implementar fácilmente un procesamiento personalizado para los mensajes entrantes.
Contexto
Message Queue for MNS es un servicio de mensajería distribuida eficiente, confiable, seguro, fácil de usar y con escalabilidad elástica. Ayuda a los desarrolladores de aplicaciones a transmitir datos y notificaciones entre componentes distribuidos, así como a construir sistemas con bajo acoplamiento. En Message Queue for MNS, un tema es el destino donde se publican los mensajes. Un publicador puede llamar a la API PublishMessage para publicar un mensaje en un tema, y los suscriptores del tema reciben dicho mensaje. Para más detalles sobre la API, consulte PublishMessage.
Al configurar un activador de tema de Simple Message Queue (formerly MNS), se registra su función como suscriptora del tema de Simple Message Queue (formerly MNS). Cuando un publicador envía un mensaje al tema de Simple Message Queue (formerly MNS), el contenido del mensaje se entrega a la función para desencadenar su ejecución. Este contenido se pasa como parámetro event al controlador de la función. Para obtener más información, consulte Basic information.
La integración de Message Queue for MNS y Function Compute ofrece las siguientes ventajas:
Procese los mensajes de forma avanzada antes de enviarlos por correo electrónico o SMS.
No necesita alojar un servicio para un endpoint HTTP.
Implemente un procesamiento personalizado completo, como enviar mensajes a Slack o conservar mensajes específicos.
Requisitos previos
-
Function Compute
-
Simple Message Queue (formerly MNS)
Notas de uso
El tema de Message Queue for MNS y la función de Function Compute deben estar en la misma región.
-
Evite las invocaciones recursivas.
Cuando escriba el código de la función, asegúrese de que no contenga la siguiente lógica: el tema A activa la función B y la función B publica un mensaje nuevo en el tema A. Esto podría provocar invocaciones recursivas infinitas.
Paso 1: Cree un activador de tema de Message Queue for MNS
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija .
En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función de destino.
En la página de detalles de la función, seleccione la pestaña Trigger y luego haga clic en Create Trigger.
-
En el panel Create Trigger, configure los parámetros y luego haga clic en OK.
Parámetro
Acciones
Ejemplo
Trigger Type
Seleccione Message Queue for MNS Topic Trigger - Asynchronous Invocation.
Simple Message Queue (formerly MNS) Activador de tema
Name
Introduzca un nombre personalizado para el activador.
trigger-mns
Version or Alias
El valor predeterminado es LATEST. Si desea crear un activador para otra versión o alias, primero cambie a esa versión o alias en la esquina superior derecha de la página de detalles de la función. Para consultar una descripción general de las versiones y los alias, consulte Manage versions y Manage aliases.
LATEST
MNS region
Seleccione la región donde se encuentra el tema. El tema de Simple Message Queue (formerly MNS) y la función de Function Compute deben estar en la misma región.
China (Chengdu)
Topic
Seleccione el tema de la lista.
Mytopic
Filter tag
Introduzca una etiqueta de filtro de mensajes.
La función se activa solo cuando recibe mensajes que contienen la etiqueta de filtro especificada.
tag
Event format
Seleccione un formato de evento. Valores válidos:
STREAM
JSON
JSON
Retry policy
Seleccione una política de reintentos. Valores válidos:
Backoff Retry
Exponential decay retry
Para obtener orientación sobre cómo elegir una política de reintentos, consulte NotifyStrategy.
Backoff Retry
Role Name
Seleccione AliyunMNSNotificationRole.
NotaSi es la primera vez que crea este tipo de activador, después de hacer clic en OK, seleccione Authorize Now en el cuadro de diálogo que aparece.
AliyunMNSNotificationRole
Paso 2: Configure los parámetros de entrada de la función
En la pestaña Code de la página de detalles de la función, haga clic en el icono
junto a Test Function y seleccione Configure Test Parameters en la lista desplegable.-
En el panel Configure Test Parameters, seleccione Create New Test Event o Modify Existing Test Event. Introduzca un nombre de evento y el contenido del evento, y luego haga clic en OK.
Los mensajes publicados en un tema de Simple Message Queue (formerly MNS) se procesan según notifyContentFormat. El mensaje procesado corresponde al parámetro
eventdel controlador de la función. Para obtener más información, consulte NotifyContentFormat.-
Si estableció Event Format en STREAM al crear el activador:
-
Si el mensaje no incluye atributos de mensaje (MessageAttributes), el formato del evento es el siguiente.
NotaSi el mensaje no incluye atributos de mensaje (MessageAttributes), el contenido del evento es el cuerpo del mensaje sin procesar como una cadena de texto.
# Message body. 'hello topic' -
Si el mensaje incluye atributos de mensaje (MessageAttributes), el formato del evento es el siguiente.
NotaEl contenido del evento incluye pares clave-valor relacionados con MessageAttributes. Para obtener más información, consulte PublishMessage.
{ "body": "hello topic", "attrs": { "Extend": "{\\"key\\":\\"value\\"}" } }
-
-
Si estableció Event Format en JSON al crear el activador:
-
Si el mensaje no incluye atributos de mensaje (MessageAttributes), el formato del evento es el siguiente.
{ "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216480040, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C082B923D4EAC694B76D928****" } -
Si el mensaje incluye atributos de mensaje (MessageAttributes), el formato del evento es el siguiente.
NotaEl contenido del evento incluye pares clave-valor relacionados con MessageAttributes. Para obtener más información, consulte PublishMessage.
{ "key": "value", "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216302888, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C281B283D4EAC694B742528****" }
-
A continuación se describen los campos del parámetro
event.Parámetro
Tipo
Ejemplo
Descripción
key
String
value
Pares clave-valor de los atributos del mensaje.
TopicOwner
String
118620210433****
El ID de la cuenta propietaria del tema.
Message
String
hello topic
El contenido del mensaje.
Subscriber
String
118620210433****
El ID de la cuenta del usuario.
PublishTime
Int
1550216302888
La hora en la que se publicó el mensaje.
SubscriptionName
String
test-fc-subscribe
El nombre de la suscripción.
MessageMD5
String
BA4BA9B48AC81F0F9C66F6C909C3****
El hash MD5 del cuerpo del mensaje.
TopicName
String
Mytopic
El nombre del tema.
MessageId
String
2F5B3C281B283D4EAC694B742528****
El ID del mensaje.
-
Paso 3: Escriba y pruebe el código de la función
Después de crear un activador de tema de Simple Message Queue (formerly MNS), escriba y pruebe el código de su función para comprobar que funciona según lo esperado.
-
En la pestaña Code de la página de detalles de la función, escriba el código en el editor y luego haga clic en Deploy.
Esta sección usa código Python como ejemplo. Puede utilizar el siguiente código de muestra como plantilla para un activador de tema de Simple Message Queue (formerly MNS).
import json import logging def handler(event, context): logger = logging.getLogger() logger.info("mns_topic trigger event = {}".format(event)) # For example, record the event to Tablestore. return "OK" -
Haga clic en Test Function.
Una vez finalizada la ejecución, consulte el resultado encima de la pestaña Code.
Más información
Además de la consola de Function Compute, también puede configurar activadores de las siguientes maneras:
Use la herramienta Serverless Devs para configurar activadores. Para obtener más información, consulte Common commands of Serverless Devs.
Use los SDK para configurar activadores. Para obtener más información, consulte SDKs.
Para modificar o eliminar un activador, consulte Manage triggers.