Conecte un clúster de Apache RocketMQ autogestionado a Function Compute mediante EventBridge para procesar mensajes con código de función personalizado. Cuando los mensajes llegan al tema de RocketMQ, el disparador invoca automáticamente la función y le pasa uno o más mensajes por invocación, según la configuración de procesamiento por lotes.
Cómo funciona
Cuando se crea un disparador en Function Compute, el servicio genera automáticamente un event stream correspondiente en EventBridge con base en la configuración especificada. Consulte los detalles del disparador en la consola de Function Compute y los recursos creados automáticamente en la consola de EventBridge.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
EventBridge activado con required permissions granted
-
Un clúster de Apache RocketMQ autogestionado desplegado y accesible. Para desplegar un clúster rápidamente y comenzar a enviar y recibir mensajes, consulte la guía de inicio rápido de su versión:
Apache RocketMQ 5.0: Inicio rápidoInicio rápido
Apache RocketMQ 4.x: Inicio rápidoInicio rápido
Un tema creado en la instancia de RocketMQ
Un grupo de consumidores creado en la instancia de RocketMQ
Límites
La instancia de RocketMQ debe ser accesible a través de internet público o desde una Virtual Private Cloud (VPC) de Alibaba Cloud.
Si se accede a la instancia desde una VPC, esta debe ubicarse en la misma región que la función. Asegúrese de que el security group permita el tráfico entrante en el puerto NameServer de RocketMQ (predeterminado: 9876).
La cantidad de disparadores de RocketMQ está limitada por la cuota de flujos de eventos de EventBridge. Para obtener más información, consulte Limits.
Paso 1: Crear un disparador
Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, haga clic en Functions.
En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función que desea gestionar.
En la página de detalles de la función, haga clic en la pestaña Trigger y luego en Create Trigger.
En el panel Create Trigger, configure los parámetros descritos en la tabla a continuación y haga clic en OK.
|
Parámetro |
Descripción |
Obligatorio |
Predeterminado |
Ejemplo |
|
Trigger type |
Seleccione Self-built Apache RocketMQ. |
Sí |
— |
Self-built Apache RocketMQ |
|
Name |
Introduzca un nombre para el disparador. |
Sí |
— |
apache-rocketmq-trigger |
|
Version or alias |
Versión o alias de la función que se asociará con el disparador. Para usar una versión o un alias específico, cambie a él primero en la página de detalles de la función. Consulte Manage versions y Manage aliases. |
No |
LATEST |
LATEST |
|
Endpoint |
Dirección NameServer del clúster de RocketMQ. |
Sí |
— |
192.168.X.X:9876 |
|
Topic |
Tema de la instancia de RocketMQ del cual se consumirán los mensajes. |
Sí |
— |
testTopic |
|
Group ID |
Identificador del grupo de consumidores en la instancia de RocketMQ. |
Sí |
— |
testGroup |
|
Filter type |
Método de filtrado de mensajes: Tag filtra por etiqueta; SQL filtra mediante una expresión SQL que coincide con las propiedades y los valores de los mensajes. |
Sí |
— |
Tag |
|
Filter |
Expresión de filtro correspondiente al tipo de filtro seleccionado. |
Sí |
— |
TagA |
|
Authentication mode |
Modo de autenticación. Solo ACL es compatible. |
Sí |
— |
ACL |
|
Username |
Nombre de usuario de ACL. Es obligatorio cuando Authentication mode es ACL. |
Sí |
— |
admin |
|
Password |
Contraseña de ACL. Es obligatoria cuando Authentication mode es ACL. |
Sí |
— |
|
|
Consumer offset |
Punto de inicio para el consumo de mensajes: Latest offset comienza desde el mensaje más reciente; Earliest offset inicia desde el mensaje más antiguo; Timestamp arranca desde un momento específico. |
Sí |
— |
Latest offset |
|
Networking |
Tipo de red para conectarse al clúster de RocketMQ: Internet accede al clúster a través de internet público; VPC accede al clúster mediante una VPC (requiere seleccionar la VPC, el vSwitch y el security group). |
Sí |
— |
Internet |
|
Invocation method |
Forma en que el disparador invoca la función: Sync invocation espera a que la función termine y devuelve el resultado (consulte Synchronous invocations); Async invocation responde de inmediato sin esperar el resultado, ideal para funciones de larga duración (consulte Asynchronous invocation overview). |
No |
Sync invocation |
Sync invocation |
|
Trigger state |
Indica si se habilita el disparador inmediatamente después de crearlo. |
No |
Enabled |
Enabled |
Para configuraciones avanzadas, como ajustes de envío, directivas de reintento y colas de mensajes no entregados, consulte Advanced features of triggers.
Una vez creado, el disparador aparece en la pestaña Triggers. Para modificarlo o eliminarlo, consulte Manage triggers.
Paso 2: Configurar un evento de prueba
El disparador transfiere los mensajes de RocketMQ a la función como una matriz de objetos de evento. Simule una invocación del disparador al configurar manualmente un evento de prueba.
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 el panel Configure Test Parameters, seleccione Create new test event o Modify existing test event. Introduzca un nombre para el evento, pegue el contenido del evento que se muestra a continuación y haga clic en OK.
[
{
"msgId": "7F0000010BDD2A84AEE70DA49B57****",
"topic": "testTopic",
"systemProperties": {
"UNIQ_KEY": "7F0000010BDD2A84AEE70DA49B57****",
"CLUSTER": "DefaultCluster",
"MIN_OFFSET": "0",
"TAGS": "TagA",
"MAX_OFFSET": "128"
},
"userProperties": {},
"body": "Hello RocketMQ"
}
]
Cada objeto de la matriz representa un mensaje de RocketMQ. A continuación se describen los campos.
|
Campo |
Tipo |
Descripción |
Ejemplo |
|
|
String |
Identificador del mensaje asignado por Apache RocketMQ. |
7F0000010BDD2A84AEE70DA49B57**** |
|
|
String |
Nombre del tema. |
testTopic |
|
|
Map |
Propiedades del sistema establecidas por RocketMQ. |
— |
|
|
String |
Clave única del mensaje. |
7F0000010BDD2A84AEE70DA49B57**** |
|
|
String |
Nombre del clúster de RocketMQ. |
DefaultCluster |
|
|
Integer |
Desplazamiento mínimo en la cola del tema. |
0 |
|
|
Integer |
Desplazamiento máximo en la cola del tema. |
128 |
|
|
String |
Etiqueta de filtro aplicada al mensaje. |
TagA |
|
|
Map |
Propiedades personalizadas definidas por el productor del mensaje. |
{} |
|
|
String |
Cuerpo del mensaje. |
Hello RocketMQ |
Paso 3: Escribir y probar el código de la función
Después de crear el disparador, escriba el código de la función para procesar los mensajes entrantes. En producción, el disparador invoca automáticamente la función cuando RocketMQ recibe un mensaje nuevo.
-
En la pestaña Code de la página de detalles de la función, escriba el código en el editor y haga clic en Deploy. El siguiente ejemplo en Node.js lee el evento y devuelve un resultado:
'use strict'; /* To enable the initializer feature, implement the initializer function as shown below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event and process each message. callback(null, 'return result'); } Haga clic en Test Function para ejecutar el evento de prueba configurado en el paso anterior.
Pasos siguientes
Además de la consola de Function Compute, puede configurar y gestionar los disparadores con las siguientes herramientas:
Serverless Devs: consulte Comandos comunes de Serverless Devs
SDK: consulte SDK
Para modificar o eliminar un disparador existente, consulte Manage triggers.