Todos os produtos
Search
Central de documentação

Function Compute:Triggers do RabbitMQ

Última atualização: Sep 09, 2026

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:

Etapa 1: Criar um trigger

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

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

  3. Configure os parâmetros do trigger. 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 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:

  1. Na aba Code, clique em no ícone 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 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

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

Indica 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 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');
    }
  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 ApsaraMQ for RabbitMQ console, selecione sua fila e clique em Send Message para publicar uma mensagem. O trigger 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 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.