Os triggers 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 por meio do EventBridge, o que possibilita processá-las individualmente ou em lotes sem gerenciar infraestrutura de polling.
Como funciona
Ao criar um trigger 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 individualmente ou em lotes, conforme a configuração definida.
Visualize o trigger no console do Function Compute e os recursos correspondentes do fluxo de eventos no console do EventBridge.
Os triggers 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 novos triggers. Para detalhes sobre cotas, consulte Limits.
Pré-requisitos
Antes de começar, verifique se você possui:
EventBridge ativado e permissões necessárias concedidas — consulte Activate EventBridge and grant permissions to a RAM user
Uma função de evento no Function Compute — consulte Create an event function
-
Uma instância ativa do ApsaraMQ for RabbitMQ com vhost e fila configurados:
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 na aba Configurations e, em seguida, clique em Create Trigger na página Triggers.
-
Configure os parâmetros do trigger. A figura a seguir mostra o painel de configuração.

Clique em OK.
Método de invocação
Escolha como o Function Compute deve invocar sua função quando as mensagens chegarem:
|
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 importante que o processamento sequencial |
Para mais detalhes, consulte Synchronous invocation e Asynchronous invocation.
Para configurações avançadas, como definições de push, políticas de nova tentativa e filas de mensagens mortas, consulte Advanced features of triggers.
Após a criação, o trigger aparece na aba Triggers. Para modificá-lo ou excluí-lo, consulte Trigger management.
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 no ícone
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 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 CloudEvents specification. 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 |
|
Indica 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 a seguir em Node.js 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 ApsaraMQ for RabbitMQ console, selecione sua fila e clique em Send Message para publicar uma mensagem. O trigger dispara automaticamente.

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

Próximos passos
Para modificar ou excluir um trigger existente, consulte Manage triggers.
Para configurações avançadas de trigger, incluindo definição de push, políticas de nova tentativa e filas de mensagens mortas, consulte Advanced features of triggers.