Use regras de evento para filtrar e rotear eventos para o Message Queue for Apache RocketMQ. Este tópico usa um evento personalizado como exemplo para descrever os pré-requisitos, o procedimento e a verificação.
Pré-requisitos
-
EventBridge
-
Message Queue for Apache RocketMQ
Etapa 1: Adicionar uma source de evento personalizada
Faça login no console do EventBridge. No painel de navegação à esquerda, clique em Event Buses.
Na barra de navegação superior, selecione uma região. Na página Event Buses, clique em no barramento de eventos personalizado de destino.
No painel de navegação à esquerda, clique em Event Sources e, em seguida, em Add Event Source.
No painel Add Custom Event Source, insira um Name e uma Description. Em Event Provider, selecione Event Provider e clique em OK.
Etapa 2: Criar uma regra de evento
O destino do evento e a regra de evento devem estar na mesma região.
Faça login no console do EventBridge.
No painel de navegação à esquerda, clique em Event Buses.
Na barra de navegação superior, selecione uma região.
Na página Event Buses, clique em no nome do barramento de eventos a ser gerenciado.
No painel de navegação à esquerda, clique em Event Rules.
Na página Event Rules, clique em Create Rule.
-
Na página Create Rule, conclua as etapas a seguir.
Na etapa Configure Basic Info, insira um Name e uma Description para a regra e clique em Next Step.
-
Na etapa Configure Event Pattern, defina o Event Source Type como Custom Event Source. Selecione a source de evento personalizada criada na Etapa 1 na lista suspensa Event Source, insira um padrão de evento no editor de código Pattern Content e clique em Next Step.
Para mais informações, consulte Event patterns.
-
Na etapa Configure Targets, configure o destino do evento e clique em Create.
NotaUma regra de evento pode ter no máximo cinco destinos de evento.
Os parâmetros a seguir estão disponíveis ao configurar o Message Queue for Apache RocketMQ como destino de evento:
Parâmetro Descrição Service Type Selecione ApsaraMQ for RocketMQ. Instance ID Selecione a instância do ApsaraMQ for RocketMQ criada anteriormente. Topic Selecione o tópico criado anteriormente. Message Body O EventBridge usa uma expressão JSONPath para extrair o conteúdo do evento para o corpo da mensagem. Evento parcial
$.data.bodyCustom Property O EventBridge usa expressões JSONPath para definir variáveis a partir do evento e um modelo para criar as propriedades personalizadas. Modelo
Variables:
Template:{ "userProperties":"$.data.userProperties", "msgId":"$.data.systemProperties.UNIQ_KEY" }{ "EB_SYS_EMBED_OBJECT":"${userProperties}", "UNIQ_KEY":"${msgId}" }Message Key O EventBridge usa uma expressão JSONPath para extrair o conteúdo do evento para as chaves da mensagem. Evento parcial
$.data.systemProperties.KEYSTags O EventBridge usa uma expressão JSONPath para extrair o conteúdo do evento para as tags da mensagem. Evento parcial
$.data.systemProperties.TAGSO EventBridge oferece suporte a vários tipos de transformação para o conteúdo do evento. Para mais informações, consulte event transformation. Exemplos:
-
Exemplo de Partial Event:
$.data.body -
Exemplo de Constant:
Warning! -
Exemplo com Variables e Template:
Exemplo de Variables:
{ "type":"$.type" }Exemplo de Template:
The event type is ${type}.
-
Etapa 3: Publicar um evento
Faça login no console do EventBridge.
No painel de navegação à esquerda, clique em Event Buses.
Na barra de navegação superior, selecione uma região.
-
Na página Event Buses, localize o barramento de eventos de destino e clique em Publish Event na coluna Operations.
NotaO console do EventBridge permite publicar eventos apenas em barramentos de eventos personalizados.
-
No painel Publish Event To Custom Event Bus, configure as opções a seguir:
Configuração
Descrição
Custom Event Source
Selecione uma source de evento personalizada existente na lista suspensa.
Event Body
Insira o conteúdo do evento.
Clique em OK.
Verificação
Para confirmar o recebimento do evento, pesquise a mensagem no console do Message Queue for Apache RocketMQ.
Faça login no console do ApsaraMQ for RocketMQ.
No painel de navegação à esquerda, clique em Instances.
Na barra de navegação superior, selecione uma região, como China (Hangzhou).
Na página Instances, localize a instância de destino. Na coluna Actions, escolha .
Na página Message Query, defina o Query Method: como By Topic. Selecione o tópico a ser consultado, especifique o Time Range e clique em Search.
O exemplo a seguir mostra uma mensagem recebida:
{
"id":"94ebc15f-f0db-4bbe-acce-56fb72fb****",
"source":"acs:mq",
"specversion":"1.0",
"type":"mq:Topic:SendMessage",
"datacontenttype":"application/json; charset=utf-8",
"subject":"acs:mq:cn-hangzhou:123456789098****:MQ_INST_123456789098****_BXhFHryi%TopicName",
"time":"2021-04-08T06:01:20.766Z",
"aliyunpublishtime":"2021-04-08T06:01:20.725Z",
"aliyuneventbusname":"BusName",
"data":{
"topic":"TopicName",
"systemProperties":{
"MIN_OFFSET":"0",
"TRACE_ON":"true",
"MAX_OFFSET":"8",
"MSG_REGION":"cn-hangzhou",
"KEYS":"systemProperties.KEYS",
"CONSUME_START_TIME":1628577790396,
"UNIQ_KEY":"AC14C305069E1B28CDFA3181CDA2****",
"TAGS":"systemProperties.TAGS",
"INSTANCE_ID":"MQ_INST_123456789098****_BXhFHryi"
},
"userProperties":{
},
"body":"TEST"
}
}