Os tópicos do Simple Message Queue (formerly MNS) funcionam como fontes de eventos e se integram ao EventBridge e ao Function Compute. Um gatilho de tópico do Simple Message Queue (formerly MNS) executa automaticamente a função associada quando uma nova mensagem é enviada para o seu tópico do Simple Message Queue (formerly MNS). Isso permite implementar facilmente um processamento personalizado para as mensagens recebidas.
Informações básicas
O Message Queue for MNS é um serviço de mensagens distribuídas eficiente, confiável, seguro, fácil de usar e com dimensionamento elástico. Ele auxilia os desenvolvedores de aplicativos a transmitir dados e notificações entre componentes distribuídos e a construir sistemas fracamente acoplados. No Message Queue for MNS, um tópico é o destino onde as mensagens são publicadas. Um publicador pode chamar a API PublishMessage para publicar uma mensagem em um tópico, e os assinantes desse tópico recebem a mensagem. Para detalhes sobre a API, consulte PublishMessage.
Ao configurar um gatilho de tópico do Simple Message Queue (formerly MNS), você registra sua função como assinante do tópico do Simple Message Queue (formerly MNS). Quando um publicador envia uma mensagem para o tópico do Simple Message Queue (formerly MNS), o conteúdo da mensagem é entregue à função para acionar sua execução. O conteúdo da mensagem é passado como o parâmetro event para o manipulador da função. Para mais informações, consulte Informações básicas.
A integração entre o Message Queue for MNS e o Function Compute oferece os seguintes benefícios:
Execute processamentos avançados nas mensagens antes de enviá-las por e-mail ou SMS.
Elimine a necessidade de hospedar um serviço para um endpoint HTTP.
Implemente processamentos personalizados ricos, como o envio de mensagens para o Slack ou a persistência de mensagens específicas.
Pré-requisitos
-
Function Compute
-
Simple Message Queue (formerly MNS)
Observações de uso
O tópico no Message Queue for MNS e a função no Function Compute devem estar na mesma região.
-
Evite invocações recursivas.
Ao escrever o código da função, garanta que ela não contenha a seguinte lógica: o Tópico A aciona a Função B, e a Função B publica uma nova mensagem no Tópico A. Isso pode causar invocações recursivas infinitas.
Etapa 1: Crie um gatilho de tópico do Message Queue for MNS
Faça login no console do Function Compute. No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função desejada.
Na página de detalhes da função, selecione a aba Trigger e clique em Create Trigger.
-
No painel Create Trigger, configure os parâmetros e clique em OK.
Parâmetro
Ações
Exemplo
Trigger Type
Selecione Message Queue for MNS Topic Trigger - Asynchronous Invocation.
Gatilho de tópico do Simple Message Queue (formerly MNS)
Name
Insira um nome personalizado para o gatilho.
trigger-mns
Version or Alias
O valor padrão é LATEST. Para criar um gatilho para outra versão ou alias, primeiro mude para essa versão ou alias no canto superior direito da página de detalhes da função. Para obter uma visão geral de versões e aliases, consulte Gerencie versões e Gerencie aliases.
LATEST
MNS region
Selecione a região onde o tópico está localizado. O tópico do Simple Message Queue (formerly MNS) e a função do Function Compute devem estar na mesma região.
China (Chengdu)
Topic
Escolha o tópico na lista.
Mytopic
Filter tag
Insira uma tag de filtro de mensagens.
A função é acionada apenas ao receber mensagens que contêm a tag de filtro especificada.
tag
Event format
Selecione um formato de evento. Valores válidos:
STREAM
JSON
JSON
Retry policy
Escolha uma política de nova tentativa. Valores válidos:
Backoff Retry
Exponential decay retry
Para obter orientações sobre como escolher uma política de nova tentativa, consulte NotifyStrategy.
Backoff Retry
Role Name
Selecione AliyunMNSNotificationRole.
NotaSe esta for a primeira vez que você cria esse tipo de gatilho, após clicar em OK, selecione Authorize Now na caixa de diálogo exibida.
AliyunMNSNotificationRole
Etapa 2: Configure os parâmetros de entrada da função
Na aba Code da página de detalhes da função, clique em no ícone
ao lado de Test Function e selecione Configure Test Parameters na lista suspensa.-
No painel Configure Test Parameters, selecione Create New Test Event ou Modify Existing Test Event. Insira um nome de evento e o conteúdo do evento e clique em OK.
As mensagens publicadas em um tópico do Simple Message Queue (formerly MNS) são processadas com base no notifyContentFormat. A mensagem processada corresponde ao parâmetro
eventdo manipulador da função. Para mais informações, consulte NotifyContentFormat.-
Caso tenha definido Event Format como STREAM ao criar o gatilho:
-
Se a mensagem não incluir atributos de mensagem (MessageAttributes), o formato do evento será o seguinte.
NotaQuando a mensagem não possui atributos (MessageAttributes), o conteúdo do evento é o corpo bruto da mensagem como uma string.
# Message body. 'hello topic' -
Se a mensagem incluir atributos de mensagem (MessageAttributes), o formato do evento será o seguinte.
NotaO conteúdo do evento inclui pares chave-valor relacionados aos MessageAttributes. Para mais informações, consulte PublishMessage.
{ "body": "hello topic", "attrs": { "Extend": "{\\"key\\":\\"value\\"}" } }
-
-
Caso tenha definido Event Format como JSON ao criar o gatilho:
-
Quando a mensagem não inclui atributos de mensagem (MessageAttributes), o formato do evento é apresentado abaixo.
{ "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216480040, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C082B923D4EAC694B76D928****" } -
Se a mensagem possuir atributos de mensagem (MessageAttributes), o formato do evento segue este modelo.
NotaO conteúdo do evento contém pares chave-valor associados aos MessageAttributes. Para mais detalhes, consulte PublishMessage.
{ "key": "value", "TopicOwner": "118620210433****", "Message": "hello topic", "Subscriber": "118620210433****", "PublishTime": 1550216302888, "SubscriptionName": "test-fc-subscribe", "MessageMD5": "BA4BA9B48AC81F0F9C66F6C909C3****", "TopicName": "Mytopic", "MessageId": "2F5B3C281B283D4EAC694B742528****" }
-
A tabela a seguir descreve os campos do parâmetro
event.Parâmetro
Tipo
Exemplo
Descrição
key
String
value
Pares chave-valor provenientes dos atributos da mensagem.
TopicOwner
String
118620210433****
O ID da conta proprietária do tópico.
Message
String
hello topic
O conteúdo da mensagem.
Subscriber
String
118620210433****
O ID da conta do usuário.
PublishTime
Int
1550216302888
O momento em que a mensagem foi publicada.
SubscriptionName
String
test-fc-subscribe
O nome da assinatura.
MessageMD5
String
BA4BA9B48AC81F0F9C66F6C909C3****
O hash MD5 do corpo da mensagem.
TopicName
String
Mytopic
O nome do tópico.
MessageId
String
2F5B3C281B283D4EAC694B742528****
O ID da mensagem.
-
Etapa 3: Escrever e testar o código da função
Após criar um gatilho de tópico do Simple Message Queue (formerly MNS), escreva e teste o código da sua função para verifique se ela funciona conforme o esperado.
-
Na aba Code da página de detalhes da função, escreva o código no editor e clique em Deploy.
Esta seção utiliza código Python como exemplo. Use o código de amostra a seguir como modelo para um gatilho de tópico do Simple Message Queue (formerly MNS).
import json import logging def handler(event, context): logger = logging.getLogger() logger.info("mns_topic trigger event = {}".format(event)) # For example, record the event to Tablestore. return "OK" -
Clique em Test Function.
Após a conclusão da execução, visualize o resultado acima da aba Code.
Mais informações
Além do console do Function Compute, você também pode configurar gatilhos das seguintes maneiras:
Utilize a ferramenta Serverless Devs para configurar gatilhos. Para mais informações, consulte Comandos comuns do Serverless Devs.
Use SDKs para configurar gatilhos. Para mais informações, consulte SDKs.
Para modifique ou exclua um gatilho, consulte Gerencie gatilhos.