Use um trigger do ApsaraMQ for RocketMQ para invocar uma função do Function Compute sempre que uma mensagem chegar a um tópico. O Function Compute integra-se ao ApsaraMQ for RocketMQ por meio do EventBridge, responsável pelo roteamento e pela entrega de eventos. Este tópico orienta você na criação de um trigger, no entendimento do payload do evento, na escrita do código da função e nos testes da configuração.
Como funciona
Ao criar um trigger do ApsaraMQ for RocketMQ no console do Function Compute, o serviço cria automaticamente fluxos de eventos no EventBridge com base na sua configuração. Quando o trigger está ativo, as mensagens que chegam ao tópico de origem são entregues à sua função — individualmente ou em lotes, conforme a configuração definida.
Os triggers do ApsaraMQ for RocketMQ foram projetados para cenários de processamento de dados em streaming de ponta a ponta.
Limites
A instância do ApsaraMQ for RocketMQ deve residir na mesma região da função do Function Compute.
Se o número de fluxos de eventos na sua conta atingir o limite máximo, não será possível criar novos triggers do ApsaraMQ for RocketMQ. Para informações sobre cotas, consulte Limites.
Pré-requisitos
Antes de começar, verifique se você:
Ativou o EventBridge e concedeu as permissões necessárias. Consulte Ativar o EventBridge e conceder permissões a um usuário RAM.
Criou uma função de evento no Function Compute. Consulte Criar uma função de evento.
Ativou o ApsaraMQ for RocketMQ e concedeu as permissões necessárias. Consulte Ativar e conceder permissões no ApsaraMQ for RocketMQ.
Criou uma instância, um tópico e um group ID do ApsaraMQ for RocketMQ. Consulte Criar uma instância, um tópico e um group ID.
Etapa 1: Criar um trigger
Faça login no console do Function Compute e acesse a página de detalhes da função.
Clique em Configurations e, em seguida, clique em Create Trigger na página Triggers.
Configure os parâmetros do trigger descritos na tabela a seguir e clique em OK.

|
Parâmetro |
Descrição |
Exemplo |
|
Consumer offset |
Define o ponto a partir do qual o ApsaraMQ for RocketMQ começa a buscar mensagens. Valores válidos: Latest Offset (inicia pela mensagem mais recente), Earliest Offset (inicia pela mensagem disponível mais antiga) e Timestamp (inicia a partir de um momento específico). |
Latest Offset |
|
Invocation method |
Determina como a função é invocada quando um evento chega. Sync Invocation: o Function Compute executa a função e aguarda uma resposta antes de processar o próximo evento ou lote. Payload máximo: 32 MB. Consulte Invocação síncrona. Async Invocation: o Function Compute passa imediatamente para o próximo evento sem esperar a conclusão da função. Payload máximo: 128 KB. Consulte Invocação assíncrona. |
Sync Invocation |
Para configurações avançadas, como push configuration, políticas de repetição e filas de mensagens mortas, consulte Recursos avançados de triggers.
Etapa 2: (Opcional) Configurar parâmetros de teste
O ApsaraMQ for RocketMQ entrega mensagens à sua função como um array event. Antes de enviar mensagens reais, simule eventos de trigger para verificar o código da sua função.
Na aba Code da página de detalhes da função, clique em
ao lado de Test Function e selecione Configure Test Parameters.No painel Configure Test Parameters, clique em Create New Test Event ou Modify Existing Test Event, insira um nome e o conteúdo do evento e clique em OK.
Veja a seguir um exemplo de payload event contendo duas mensagens:
[
{
"id": "94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source": "RocketMQ-Function-rocketmq-trigger",
"specversion": "1.0",
"type": "mq:Topic:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName",
"time": "2021-04-08T06:01:20.766Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T02:05:16.791Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RocketMQ-Function-rocketmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"topic": "TopicName",
"systemProperties": {
"MIN_OFFSET": "0",
"TRACE_ON": "true",
"MAX_OFFSET": "8",
"MSG_REGION": "cn-hangzhou",
"KEYS": "systemProperties.KEYS",
"CONSUME_START_TIME": 1628577790396,
"TAGS": "systemProperties.TAGS",
"INSTANCE_ID": "MQ_INST_164901546557****_BXhFHryi"
},
"userProperties": {},
"body": "TEST"
}
},
{
"id": "94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source": "RocketMQ-Function-rocketmq-trigger",
"specversion": "1.0",
"type": "mq:Topic:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mq:cn-hangzhou:164901546557****:MQ_INST_164901546557****_BXhFHryi%TopicName",
"time": "2021-04-08T06:01:20.766Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T02:05:16.791Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RocketMQ-Function-rocketmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"topic": "TopicName",
"systemProperties": {
"MIN_OFFSET": "0",
"TRACE_ON": "true",
"MAX_OFFSET": "8",
"MSG_REGION": "cn-hangzhou",
"KEYS": "systemProperties.KEYS",
"CONSUME_START_TIME": 1628577790396,
"TAGS": "systemProperties.TAGS",
"INSTANCE_ID": "MQ_INST_164901546557****_BXhFHryi"
},
"userProperties": {},
"body": "TEST"
}
}
]
Cada elemento do array é uma mensagem formatada em CloudEvents. Os campos de nível superior (id, source, specversion, entre outros) seguem a especificação CloudEvents. Para mais detalhes, consulte Visão geral. O objeto data contém o conteúdo da mensagem do RocketMQ:
|
Campo |
Tipo |
Exemplo |
Descrição |
|
|
String |
TopicName |
Nome do tópico. |
|
|
Map |
Propriedades de mensagem no nível de sistema do RocketMQ. |
|
|
|
Int |
0 |
Offset mais antigo na fila. |
|
|
Boolean |
true |
Indica se existe um rastro de mensagem. |
|
|
Int |
8 |
Offset mais recente na fila. |
|
|
String |
cn-hangzhou |
Região onde a mensagem foi enviada. |
|
|
String |
systemProperties.KEYS |
Chaves usadas para filtrar a mensagem. |
|
|
Long |
1628577790396 |
Horário de início do consumo da mensagem, em milissegundos. |
|
|
String |
AC14C305069E1B28CDFA3181CDA2**** |
Chave exclusiva da mensagem. |
|
|
String |
systemProperties.TAGS |
Tags usadas para filtrar a mensagem. |
|
|
String |
MQ_INST_123456789098****_BXhFHryi |
ID da instância do ApsaraMQ for RocketMQ. |
|
|
Map |
Propriedades definidas pelo usuário. |
|
|
|
String |
TEST |
Corpo da mensagem. |
Etapa 3: Escrever e testar sua função
Após criar o trigger, escreva o código da sua função e teste-o.
Escrever o código da função
Na aba Code da página de detalhes da função, escreva seu código de handler e clique em Deploy Code.
O exemplo Node.js a seguir demonstra como lidar com o evento:
'use strict';
exports.handler = (event, context, callback) => {
console.log("event: %s", event);
// Parse the event parameters and process the event.
callback(null, 'return result');
}
Testar a função
Há dois métodos disponíveis:
Método 1: Simular com parâmetros de teste
Caso tenha configurado um evento de teste na Etapa 2, clique em Test Function na aba Code.
Método 2: Enviar uma mensagem real
Faça login no console do ApsaraMQ for RocketMQ, selecione o tópico criado e clique em Send Message.

Após a execução da função, visualize a saída em Real-time Logs.

Próximos passos
Para modificar ou excluir este trigger, consulte Gerenciar triggers.
Para visualizar os fluxos de eventos criados por este trigger, faça login no console do EventBridge. Consulte Visão geral.