Esta página explica como criar subscrições do Pub/Sub com filtros.
Quando recebe mensagens de uma subscrição com um filtro, só recebe as mensagens que correspondem ao filtro. O serviço Pub/Sub acusa automaticamente a receção das mensagens que não correspondem ao filtro. Pode filtrar mensagens pelos respetivos atributos, mas não pelos dados na mensagem.
Pode ter várias subscrições associadas a um tópico, e cada subscrição pode ter um filtro diferente.
Por exemplo, se tiver um tópico que recebe notícias de diferentes partes do mundo, pode configurar uma subscrição para filtrar notícias publicadas apenas numa região específica. Para esta configuração, tem de garantir que um dos atributos da mensagem do tópico transmite a região da publicação de notícias.
Quando recebe mensagens de uma subscrição com um filtro, não incorre em taxas de mensagens de saída para as mensagens que o Pub/Sub reconhece automaticamente. Incorre em taxas de entrega de mensagens e taxas de armazenamento relacionadas com a procura para estas mensagens.
Crie uma subscrição com um filtro
As subscrições de obtenção e emissão podem ter filtros. Todos os subscritores podem receber mensagens de subscrições com filtros, incluindo subscritores que usam a API StreamingPull.
Pode criar uma subscrição com um filtro através da Google Cloud consola, da CLI Google Cloud, das bibliotecas de cliente ou da API Pub/Sub.
Consola
Para criar uma subscrição de obtenção com um filtro, siga estes passos:
Na Google Cloud consola, aceda à página Subscrições.
Clique em Criar subscrição.
Introduza o ID da subscrição.
Escolha ou crie um tópico no menu pendente. A subscrição recebe mensagens do tópico.
Na secção Filtro de subscrição, introduza a expressão de filtro.
Clique em Criar.
Para criar uma subscrição push com um filtro, siga estes passos:
Na Google Cloud consola, aceda à página Subscrições.
Clique em Criar subscrição.
Introduza o ID da subscrição.
Escolha ou crie um tópico no menu pendente. A subscrição recebe mensagens do tópico.
Na secção Tipo de fornecimento, clique em Push.
No campo URL do ponto final, introduza o URL do ponto final de envio.
Na secção Filtro de subscrição, introduza a expressão de filtro.
Clique em Criar.
gcloud
Para criar uma subscrição de obtenção com um filtro, use o comando
gcloud pubsub subscriptions create
com a flag --message-filter:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --message-filter='FILTER'
Substitua o seguinte:
- SUBSCRIPTION_ID: o ID da subscrição a criar
- TOPIC_ID: o ID do tópico a anexar à subscrição
- FILTER: uma expressão na sintaxe de filtragem
Para criar uma subscrição push com um filtro, use o comando
gcloud pubsub subscriptions create
com as flags --push-endpoint e --message-filter:
gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --push-endpoint=PUSH_ENDPOINT \ --message-filter='FILTER'
Substitua o seguinte:
- SUBSCRIPTION_ID: o ID da subscrição a criar
- TOPIC_ID: o ID do tópico a anexar à subscrição
- PUSH_ENDPOINT: o URL do servidor no qual o subscritor de envio por push é executado
- FILTER: uma expressão na sintaxe de filtragem
REST
Para criar uma subscrição com um filtro, use o método
projects.subscriptions.create.
PUT https://pubsub.googleapis.com/v1/projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID Authorization: Bearer $(gcloud auth print-access-token)
Substitua o seguinte:
- PROJECT_ID: o ID do projeto no qual criar a subscrição
- SUBSCRIPTION_ID: o ID da subscrição a criar
Para criar uma subscrição de obtenção com um filtro, especifique o filtro no corpo do pedido:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "filter": "FILTER" }
Substitua o seguinte:
- PROJECT_ID: o ID do projeto com o tópico
- TOPIC_ID: o ID do tópico a anexar à subscrição
- FILTER: uma expressão na sintaxe de filtragem
Para criar uma subscrição push com um filtro, especifique o ponto final push e o filtro no corpo do pedido:
{ "topic": "projects/PROJECT_ID/topics/TOPIC_ID", "pushConfig": { "pushEndpoint": "PUSH_ENDPOINT" }, "filter": "FILTER" }
Substitua o seguinte:
- PROJECT_ID: o ID do projeto com o tópico
- TOPIC_ID: o ID do tópico a anexar à subscrição
- PUSH_ENDPOINT: o URL do servidor no qual o subscritor de envio por push é executado
- FILTER: uma expressão na sintaxe de filtragem
C++
Antes de experimentar este exemplo, siga as instruções de configuração do C++ no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C++ do Pub/Sub.
C#
Antes de experimentar este exemplo, siga as instruções de configuração do C# no artigo Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# do Pub/Sub.
Ir
O exemplo seguinte usa a versão principal da biblioteca de cliente Go Pub/Sub (v2). Se ainda estiver a usar a biblioteca v1, consulte o guia de migração para a v2. Para ver uma lista de exemplos de código da v1, consulte os exemplos de código descontinuados.
Antes de experimentar este exemplo, siga as instruções de configuração do Go em Início rápido: usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go Pub/Sub.