Os gatilhos de fila do Simple Message Queue (antigo MNS) permitem executar uma função do Function Compute automaticamente sempre que uma mensagem chega a uma fila. O gatilho usa o EventBridge como base: ao criar o gatilho no console do Function Compute, o serviço cria os event streams necessários no EventBridge em seu nome. Para obter detalhes sobre event streams, consulte Overview.
Com o gatilho ativo, cada mensagem adicionada à fila de origem aciona a execução da função associada. As mensagens são entregues individualmente ou em lotes, conforme a configuração de lote definida. Esse padrão é ideal para processamento de dados em streaming de ponta a ponta.
Restrições
A fila do Simple Message Queue (antigo MNS) e a função do Function Compute devem estar na mesma região.
Se sua conta Alibaba Cloud atingir o limite de event streams do EventBridge, não será possível criar novos gatilhos de fila do Simple Message Queue (antigo MNS). Para consultar os limites atuais, consulte Limits.
Pré-requisitos
Antes de começar, verifique se você tem:
EventBridge ativado e permissões concedidas: Activate EventBridge and grant permissions to a RAM user
Uma função de evento do Function Compute: Create an event function
Simple Message Queue (antigo MNS) ativado e acesso de usuário RAM concedido: Activate SMQ and authorize RAM users to access SMQ
Uma fila criada no Simple Message Queue (antigo MNS): Create a queue
Etapa 1: Criar um gatilho
Faça login no console do Function Compute e clique em na função desejada.
Na página de detalhes da função, clique em na aba Configurations, acesse Triggers e clique em Create Trigger.
-
Preencha as configurações do gatilho. O campo principal é Invocation Method. Para mais detalhes, consulte Synchronous invocation e Asynchronous invocation.
Método de invocação
Comportamento
Payload máximo
Quando usar
Sync Invocation
O Function Compute aguarda o retorno da função antes de entregar o próximo evento ou lote
32 MB
Quando a ordem ou o processamento sequencial for importante
Async Invocation
O Function Compute entrega o evento e passa imediatamente para o próximo; a função executa em segundo plano
128 KB
Cenários de alto throughput que exigem consumo rápido de eventos
Clique em OK.

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 gatilho aparece na aba Triggers. Para modificá-lo ou excluí-lo, consulte Manage triggers.
Etapa 2: (Opcional) Configurar parâmetros de teste
A função recebe eventos do Simple Message Queue (antigo MNS) como um parâmetro event — um array de objetos no formato CloudEvents. Para testar o código da função sem enviar uma mensagem real, 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.
Exemplo de payload do event:
[
{
"id": "c2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
},
{
"id": "d2g71017-6f65-fhcf-a814-a396fc8d****",
"source": "MNS-Function-mnstrigger",
"specversion": "1.0",
"type": "mns:Queue:SendMessage",
"datacontenttype": "application/json; charset=utf-8",
"subject": "acs:mns:cn-hangzhou:164901546557****:queues/zeus",
"time": "2021-04-08T06:28:17.093Z",
"aliyunaccountid": "164901546557****",
"aliyunpublishtime": "2021-10-15T07:06:34.028Z",
"aliyunoriginalaccountid": "164901546557****",
"aliyuneventbusname": "MNS-Function-mnstrigger",
"aliyunregionid": "cn-chengdu",
"aliyunpublishaddr": "42.120.XX.XX",
"data": {
"requestId": "606EA3074344430D4C81****",
"messageId": "C6DB60D1574661357FA227277445****",
"messageBody": "TEST"
}
}
]
Referência de campos do evento
Cada elemento do array segue a CloudEvents specification.
Campos de envelope CloudEvents
|
Campo |
Tipo |
Exemplo |
Descrição |
|
|
String |
|
ID único do evento |
|
|
String |
|
Identificador da origem do evento (nome do event bus) |
|
|
String |
|
Tipo do evento |
|
|
String |
|
ARN da fila de origem |
|
|
String |
|
Horário em que a mensagem foi enfileirada (ISO 8601) |
|
|
String |
|
Versão da especificação CloudEvents |
|
|
String |
|
Tipo de conteúdo do campo |
|
|
String |
|
Região onde a fila está localizada |
|
|
String |
|
ID da conta Alibaba Cloud |
|
|
String |
|
Horário em que o EventBridge publicou o evento |
Campos de data
|
Campo |
Tipo |
Exemplo |
Descrição |
|
|
String |
|
ID único da solicitação de envio de mensagem |
|
|
String |
|
ID único da mensagem |
|
|
String |
|
Conteúdo do corpo da mensagem |
Etapa 3: Escrever e testar a função
Após criar o gatilho, escreva o código da função, implante-o e verifique se o gatilho funciona corretamente de ponta a ponta.
Escrever e implantar o código da função
Na aba Code, escreva seu handler e clique em Deploy Code.
O exemplo Node.js a seguir demonstra como escrever o código da função:
'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 and process event.
callback(null, 'return result');
}
Testar a função
Use um dos métodos abaixo:
Evento simulado: Caso tenha configurado um evento de teste na Etapa 2, clique em Test Function na aba Code.
Mensagem real: Faça login no Simple Message Queue (formerly MNS) console, selecione a fila de origem e clique em Send Message.

Após a execução da função, visualize a saída em Real-time Logs.

Próximos passos
Modificar ou excluir um gatilho: Manage triggers
Configurar políticas de nova tentativa e filas de mensagens mortas: Advanced features of triggers