Os gatilhos do ApsaraMQ for RabbitMQ permitem executar uma função do Function Compute sempre que uma mensagem entra em uma fila do RabbitMQ. Essa integração encaminha as mensagens pelo EventBridge, o que possibilita processá-las individualmente ou em lotes sem gerenciar infraestrutura de polling.
Como funciona
Ao criar um gatilho do ApsaraMQ for RabbitMQ no console do Function Compute, o sistema cria automaticamente um fluxo de eventos no EventBridge. Quando uma mensagem é enfileirada na instância source do RabbitMQ, o EventBridge a entrega à sua função como um evento formatado em CloudEvents. As mensagens são enviadas para a função uma a uma ou em lotes, conforme a configuração definida.
Visualize o gatilho no console do Function Compute e os recursos de fluxo de eventos correspondentes no console do EventBridge.
Os gatilhos do ApsaraMQ for RabbitMQ são ideais para cenários de processamento de dados em streaming de ponta a ponta.
Limitações
A instância do ApsaraMQ for RabbitMQ e a função do Function Compute devem estar na mesma região.
Se o número de fluxos de eventos na sua conta atingir a cota, não será possível criar gatilhos adicionais. Para detalhes 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
Possui uma função de evento no Function Compute — consulte Criar uma função de evento
-
Tem uma instância ativa do ApsaraMQ for RabbitMQ com vhost e fila configurados:
Etapa 1: Criar um gatilho
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 gatilho. A figura a seguir mostra o painel de configuração.

Clique em OK.
Método de invocação
Escolha como o Function Compute invoca sua função quando as mensagens chegam:
|
Método |
Payload máximo |
Comportamento |
Quando usar |
|
Sync Invocation |
32 MB |
Processa um evento ou lote por vez; aguarda o retorno da função antes de processar o próximo |
Processamento sequencial em que a ordem é importante |
|
Async Invocation |
128 KB |
Retorna imediatamente e continua para o próximo evento ou lote; a função executa em segundo plano |
Cenários de alto throughput em que a velocidade de consumo é mais crítica que o processamento sequencial |
Para obter detalhes, consulte Invocação síncrona e Invocação assíncrona.
Para configurações avançadas, como definições de push, políticas de nova tentativa e filas de mensagens mortas, consulte Recursos avançados de gatilhos.
Após a criação, o gatilho aparece na aba Triggers. Para modificá-lo ou excluí-lo, consulte Gerenciamento de gatilhos.
Etapa 2: (Opcional) Configurar parâmetros de teste
O ApsaraMQ for RabbitMQ passa as mensagens para sua função como um array event. Para testar o código da função sem enviar mensagens reais, simule o evento manualmente:
Na aba Code, 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 de evento e o conteúdo do evento abaixo e clique em OK.
Veja a seguir um exemplo de payload event contendo duas mensagens:
[
{
"id": "bj694332-4cj1-389e-9d8c-b137h30b****",
"source": "RabbitMQ-Function-rabbitmq-trigger",
"specversion": "1.0",
"type": "amqp:Queue:SendMessage",
"datacontenttype": "application/json;charset=utf-8",
"subject": "acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping",
"time": "2021-08-12T06:56:40.709Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T08:58:55.140Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RabbitMQ-Function-rabbitmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"envelope": {
"deliveryTag": 98,
"exchange": "",
"redeliver": false,
"routingKey": "housekeeping"
},
"body": {
"Hello": "RabbitMQ"
},
"props": {
"contentEncoding": "UTF-8",
"messageId": "f7622d51-e198-41de-a072-77c1ead7****"
}
}
},
{
"id": "bj694332-4cj1-389e-9d8c-b137h30b****",
"source": "RabbitMQ-Function-rabbitmq-trigger",
"specversion": "1.0",
"type": "amqp:Queue:SendMessage",
"datacontenttype": "application/json;charset=utf-8",
"subject": "acs:amqp:cn-hangzhou:164901546557****:/instances/amqp-cn-tl32e756****/vhosts/eb-connect/queues/housekeeping",
"time": "2021-08-12T06:56:40.709Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T08:58:55.140Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "RabbitMQ-Function-rabbitmq-trigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"envelope": {
"deliveryTag": 98,
"exchange": "",
"redeliver": false,
"routingKey": "housekeeping"
},
"body": {
"Hello": "RabbitMQ"
},
"props": {
"contentEncoding": "UTF-8",
"messageId": "f7622d51-e198-41de-a072-77c1ead7****"
}
}
}
]
O array externo contém um objeto por mensagem no lote. Os campos de nível superior seguem a especificação CloudEvents. O campo data carrega o conteúdo específico do RabbitMQ:
Parâmetros do campo data
|
Parâmetro |
Tipo |
Exemplo |
Descrição |
|
|
Map |
Corpo da mensagem com conteúdo definido pelo usuário |
|
|
|
String |
|
Dados do usuário no corpo da mensagem |
|
|
Map |
Atributos da mensagem |
|
|
|
String |
|
Codificação do corpo da mensagem |
|
|
String |
|
ID exclusivo da mensagem |
|
|
Map |
Metadados do envelope AMQP |
|
|
|
Int |
|
Tag de entrega atribuída pelo broker |
|
|
String |
|
Nome do exchange que envia a mensagem |
|
|
Boolean |
|
Especifica se a mensagem pode ser reenviada. Valores válidos: |
|
|
String |
|
Chave de roteamento usada para entregar a mensagem à fila |
Etapa 3: Escrever e testar o código da função
Escreva o código no editor para analisar e processar o array event recebido pela função. Faça o deploy e teste usando um dos dois métodos abaixo.
-
Na aba Code, escreva o código da função e clique em Deploy Code. O exemplo Node.js a seguir registra o evento bruto e retorna um resultado:
'use strict'; /* To enable the initializer feature please implement the initializer function as below: exports.initializer = (context, callback) => { console.log('initializing'); callback(null, ''); }; */ exports.handler = (event, context, callback) => { console.log("event: %s", event); // Parse the event parameters and process the event. callback(null, 'return result'); } -
Teste a função usando um destes métodos:
Evento simulado: Clique em Test Function para executar com os parâmetros de teste configurados na Etapa 2.
-
Mensagem real: Faça login no console do ApsaraMQ for RabbitMQ, selecione sua fila e clique em Send Message para publicar uma mensagem. O gatilho dispara automaticamente.

-
Após a execução, verifique o resultado em Real-time Logs.

Próximos passos
Para modificar ou excluir um gatilho existente, consulte Gerenciar gatilhos.
Para configurações avançadas de gatilhos, incluindo configuração de push, políticas de nova tentativa e filas de mensagens mortas, consulte Recursos avançados de gatilhos.