O recurso de filtragem de mensagens do Message Service (MNS) permite rotear mensagens de um tópico para diferentes assinaturas com base em tags. Este tópico descreve o funcionamento da filtragem de mensagens e como definir tags de filtragem.
Contexto
Por padrão, uma assinatura de tópico recebe todas as mensagens publicadas nele.
Se a assinatura tiver uma tag de filtragem de mensagens, receberá apenas as mensagens cuja tag corresponder à tag de filtragem da assinatura.
Caso a assinatura não tenha tag de filtragem de mensagens, receberá todas as mensagens do tópico, independentemente de possuírem ou não uma tag de mensagem.
Funcionamento
A figura a seguir ilustra como as assinaturas com tags de filtragem processam mensagens com diferentes tags e as encaminham para as filas de destino.

Na figura acima, o Tópico 1 tem três assinaturas. As Assinaturas 1 e 2 possuem tags de filtragem distintas, enquanto a Assinatura 3 não tem tag de filtragem. Os endpoints dessas assinaturas são, respectivamente, Fila 1, Fila 2 e Fila 3.
-
Quando a tag da mensagem corresponde à tag de filtragem da assinatura, ocorre o seguinte processo:
O Message Service (MNS) envia a Mensagem 1 para a Fila 1.
O Message Service (MNS) envia a Mensagem 2 para a Fila 2.
-
Para assinaturas sem tag de filtragem de mensagens, o comportamento é:
O Message Service (MNS) envia a Mensagem 1 para a Fila 3.
O Message Service (MNS) envia a Mensagem 2 para a Fila 3.
O Message Service (MNS) envia a Mensagem 3 para a Fila 3.
Defina uma tag de filtragem de mensagens
Este exemplo demonstra como configurar uma tag de filtragem em uma assinatura para selecionar mensagens do TopicA. O sistema enviará para a QueueB somente as mensagens com a tag tag-a. Para saber como crie uma assinatura de tópico, consulte Criar uma assinatura.
-
No painel Create Subscription, insira
tag-ano campo Message Filtering Tag para filtrar as mensagens do TopicA e encaminhá-las à QueueB.Defina a retry policy como Backoff Retry e o message push format como SIMPLIFIED.
-
Para que a filtragem funcione, defina também uma tag de mensagem correspondente ao publicar a mensagem por meio de um SDK. Para ver o código de exemplo completo, consulte Etapa 5: Publicar uma mensagem.
O trecho de código abaixo mostra como atribuir uma tag de mensagem durante a publicação em um tópico:
TopicMessage message = new Base64TopicMessage(); // Set the tag to match the subscription's message filtering tag. message.setMessageTag("tag-a");