Conecte um cluster Apache RocketMQ autogerenciado ao Function Compute por meio do EventBridge para processar mensagens com código de função personalizado. Quando as mensagens chegam ao seu tópico do RocketMQ, o trigger invoca automaticamente sua função, passando uma ou mais mensagens por invocação conforme a configuração de lote definida.
Como funciona
Ao criar um trigger no Function Compute, o serviço gera automaticamente um fluxo de eventos correspondente no EventBridge com base na sua configuração. Visualize os detalhes do trigger no console do Function Compute e os recursos criados automaticamente no console do EventBridge.
Pré-requisitos
Antes de começar, verifique se você possui:
EventBridge ativado com as permissões necessárias concedidas
-
Um cluster Apache RocketMQ autogerenciado implantado e acessível. Para implantar rapidamente um cluster e começar a enviar e receber mensagens, consulte o guia de início rápido da sua versão:
Apache RocketMQ 5.0: Início rápidoInício rápido
Apache RocketMQ 4.x: Início rápidoInício rápido
Um tópico criado na sua instância do RocketMQ
Um grupo de consumidores criado na sua instância do RocketMQ
Limitações
A instância do RocketMQ deve ser acessível pela internet pública ou por uma VPC da Alibaba Cloud.
Caso o acesso à instância ocorra via VPC, ela deve estar na mesma região da sua função. Certifique-se de que o grupo de segurança permita tráfego de entrada na porta do NameServer do RocketMQ (padrão: 9876).
A quantidade de triggers do RocketMQ está limitada pela cota de fluxos de eventos do EventBridge. Para mais detalhes, consulte Limites.
Etapa 1: Crie um trigger
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.
Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função que deseja gerenciar.
Na página de detalhes da função, clique em na aba Trigger e, em seguida, clique em Create Trigger.
No painel Create Trigger, configure os parâmetros descritos na tabela a seguir e clique em OK.
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
Exemplo |
|
Trigger type |
Selecione Self-built Apache RocketMQ. |
Sim |
— |
Self-built Apache RocketMQ |
|
Name |
Insira um nome para o trigger. |
Sim |
— |
apache-rocketmq-trigger |
|
Version or alias |
Versão ou alias da função a ser associada ao trigger. Para usar uma versão ou alias específico, alterne para ele primeiro na página de detalhes da função. Consulte Gerenciar versões e Gerenciar aliases. |
Não |
LATEST |
LATEST |
|
Endpoint |
Endereço do NameServer do seu cluster RocketMQ. |
Sim |
— |
192.168.X.X:9876 |
|
Topic |
Tópico na sua instância do RocketMQ de onde as mensagens serão consumidas. |
Sim |
— |
testTopic |
|
Group ID |
ID do grupo de consumidores na sua instância do RocketMQ. |
Sim |
— |
testGroup |
|
Filter type |
Método de filtragem de mensagens: Tag filtra por tag; SQL filtra por uma expressão SQL que corresponde às propriedades e valores da mensagem. |
Sim |
— |
Tag |
|
Filter |
Expressão de filtro correspondente ao tipo de filtro selecionado. |
Sim |
— |
TagA |
|
Authentication mode |
Modo de autenticação. Apenas ACL é suportado. |
Sim |
— |
ACL |
|
Username |
Nome de usuário ACL. Obrigatório quando o Authentication mode for ACL. |
Sim |
— |
admin |
|
Password |
Senha ACL. Obrigatória quando o Authentication mode for ACL. |
Sim |
— |
|
|
Consumer offset |
Ponto inicial para consumo de mensagens: Latest offset começa pela mensagem mais recente; Earliest offset começa pela mensagem mais antiga; Timestamp inicia a partir de um ponto específico no tempo. |
Sim |
— |
Latest offset |
|
Networking |
Tipo de rede para conexão com o cluster RocketMQ: Internet acessa o cluster pela internet pública; VPC acessa o cluster através de uma VPC (requer seleção da VPC, vSwitch e grupo de segurança). |
Sim |
— |
Internet |
|
Invocation method |
Forma como o trigger invoca sua função: Sync invocation aguarda a conclusão da função e retorna o resultado (consulte Invocações síncronas); Async invocation retorna imediatamente sem esperar pelo resultado, ideal para funções de longa duração (consulte Visão geral da invocação assíncrona). |
Não |
Sync invocation |
Sync invocation |
|
Trigger state |
Defina se o trigger será ativado imediatamente após a criação. |
Não |
Enabled |
Enabled |
Para configurações avançadas, como push configurations, políticas de repetição e filas de mensagens mortas, consulte Recursos avançados de triggers.
Após a criação, o trigger aparece na aba Triggers. Para modificá-lo ou excluí-lo, consulte Gerenciar triggers.
Etapa 2: Configure um evento de teste
O trigger passa as mensagens do RocketMQ para sua função como um array de objetos de evento. Simule uma invocação do trigger configurando manualmente um evento de teste.
Na aba Code da página de detalhes da função, clique em no ícone
ao lado de Test Function e selecione Configure Test Parameters.No painel Configure Test Parameters, selecione Create new test event ou Modify existing test event. Insira um nome para o evento, cole o conteúdo do evento abaixo e clique em 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 no array representa uma mensagem do RocketMQ. Os campos são descritos abaixo.
|
Campo |
Tipo |
Descrição |
Exemplo |
|
|
String |
ID da mensagem atribuído pelo Apache RocketMQ. |
7F0000010BDD2A84AEE70DA49B57**** |
|
|
String |
Nome do tópico. |
testTopic |
|
|
Map |
Propriedades de nível de sistema definidas pelo RocketMQ. |
— |
|
|
String |
Chave única da mensagem. |
7F0000010BDD2A84AEE70DA49B57**** |
|
|
String |
Nome do cluster RocketMQ. |
DefaultCluster |
|
|
Integer |
Offset mínimo na fila do tópico. |
0 |
|
|
Integer |
Offset máximo na fila do tópico. |
128 |
|
|
String |
Tag de filtro aplicada à mensagem. |
TagA |
|
|
Map |
Propriedades personalizadas definidas pelo produtor da mensagem. |
{} |
|
|
String |
Corpo da mensagem. |
Hello RocketMQ |
Etapa 3: Escrever e testar o código da função
Após criar o trigger, escreva o código da função para processar as mensagens recebidas. Em produção, o trigger invoca automaticamente a função quando o RocketMQ recebe uma nova mensagem.
-
Na aba Code da página de detalhes da função, escreva seu código no editor e clique em Deploy. O exemplo Node.js a seguir lê o evento e retorna um 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'); } Clique em Test Function para executar o evento de teste configurado na etapa anterior.
Próximos passos
Além do console do Function Compute, configure e gerencie triggers utilizando:
Serverless Devs: Consulte Comandos comuns do Serverless Devs
SDKs: Consulte SDKs
Para modificar ou excluir um trigger existente, consulte Gerenciar triggers.