Todos os produtos
Search
Central de documentação

Function Compute:Gatilhos do RabbitMQ

Última atualização: Jun 29, 2026

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ê:

Etapa 1: Criar um gatilho

  1. Faça login no console do Function Compute e acesse a página de detalhes da função.

  2. Clique em Configurations e, em seguida, clique em Create Trigger na página Triggers.

  3. Configure os parâmetros do gatilho. A figura a seguir mostra o painel de configuração.

    image

  4. 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:

  1. Na aba Code, clique em image.png ao lado de Test Function e selecione Configure Test Parameters.

  2. 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

body

Map

Corpo da mensagem com conteúdo definido pelo usuário

Hello

String

EventBridge

Dados do usuário no corpo da mensagem

props

Map

Atributos da mensagem

contentEncoding

String

utf-8

Codificação do corpo da mensagem

messageId

String

f7622d51-e198-41de-a072-77c1ead7****

ID exclusivo da mensagem

envelope

Map

Metadados do envelope AMQP

deliveryTag

Int

98

Tag de entrega atribuída pelo broker

exchange

String

Nome do exchange que envia a mensagem

redeliver

Boolean

false

Especifica se a mensagem pode ser reenviada. Valores válidos: true ou false

routingKey

String

housekeeping

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.

  1. 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');
    }
  2. 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.

      image

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

    image

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.