Handlers

Handlers funcionam como agregadores de tópicos, ajudando a criar os canais de publicação de eventos de forma mais organizada e rápida. Além disso, a política de segurança e de tentativas automáticas de envio a ser seguida para garantir a entrega dos eventos aos subscritores é definida a nível de handler.

Para entender como os handlers funcionam, é necessário compreender a forma com a qual o Events Hub habilita a URL de publicação de eventos.

URL de publicação de eventos

Para que os eventos sejam publicados, é necessário habilitar sua publicação, criando o caminho (URL) que servirá como canal de envio de eventos de um publicador até o Events Hub.

O canal completo de publicação é composto por uma série de marcadores de posição:

URL base + context + handler + topic

A URL base é definida pelo Events Hub, que concatena o endereço da interface de cada cliente + event-receiver + uma hash. Já contexto (context), handler e tópico (topic) são criados pelo usuário. E a ideia por trás de existirem esses níveis distintos para a formação da URL é exatamente ajudar o usuário a organizar (e, consequentemente, gerenciar) os diferentes canais de publicação.

Tópico é o nível mais especializado. Handlers funcionam como agregadores de tópicos, servindo como uma camada lógica de agrupamento. Por fim, contextos adicionam mais um nível de agrupamento que ajuda a utilizar um mesmo tópico em situações diferentes.

Por exemplo, imagine que você deseja criar um fluxo de publicações de alertas de vários tipos. Para isso, pode criar um handler de nome "Alerts", com path /alerts. Então, pode criar vários tópicos agrupados no handler, como, por exemplo, "latency", para alertas de latência, ou "api-update", para alertas a respeito de atualizações em APIs.

Ao criar o handler e os tópicos, você consegue estabelecer os contextos nos quais cada tópico estará habilitado. O contexto padrão ("Default") não cria nenhum marcador de posição para a URL de publicação. Eventos para o tópico "latency", então, deverão ser enviados para <URL base>/alerts/latency.

Agora, é possível que você queira utilizar esse mesmo tópico "latency" em um cenário de teste. Nesse caso, é possível criar o contexto "Testing" e habilitar o tópico para uso nesse contexto também. Então, eventos poderão ser enviados para <URL base>/testing/alerts/latency.

A grande vantagem de usar contextos diferentes é que é possível reutilizar todas as definições de políticas de segurança e tentativas de envio, que são definidas a nível de handler, sem precisar criar novos tópicos específicos para teste, pro exemplo. E como os endpoints de autorização são definidos a nível de contexto, é possível utilizar um mock de autorização para o "Testing" enquanto mantém a autorização do contexto padrão inalterada.

Veja sobre como criar handlers na próxima página.

Listagem de handlers

Na página Handlers, você pode visualizar todos os handlers existentes. Os handlers podem ser dispostos em cards (ao clicar no ícone icon view card) ou por meio de uma tabela (ao clicar no ícone icon view table):

handlers cards
Handlers dispostos em cards
handlers table
Handlers dispostos em tabela

Os handlers são listados em ordem alfabética, que pode ser ascendente ou descendente (o que é escolhido no campo Sort).

É possível buscar handlers utilizando o campo Keywords, que procura por termos utilizados no nome ou descrição dos handlers.

Quando a exibição for por cards, cada card exibe o nome e descrição do handler, a política (policy) que ele utiliza e quantidade de publicadores (publishers), subscritores (subscribers) e tópicos (topics). O ícone icon magnifier direciona à página Event Status com os eventos enviados para os tópicos do handler. Ao clicar sobre o card, o usuário vai até a tela de overview do handler.

Quando a exibição for por tabela, estas são as colunas:

  • NAME, com o nome do handler.

  • DESCRIPTION, com a descrição do handler.

  • VERSION, exibindo a versão do handler.

  • BASE PATH, exibindo o caminho do handler, que comporá a URL de publicação conforme explicado acima.

  • ACTIONS, com ícones para ir à página de Event Status já filtrada pelo handler (icon magnifier), para ir à tela de overview do handler (icon overview) e para excluir o handler (icon delete).

Overview de um handler

Clicando sobre o card de um handler ou no ícone icon overview na tabela de handlers, o usuário vai até a página de overview, que mostra detalhes da configuração do handler ao longo de quatro abas: Topics, Policy, Publishers e Subscribers.

Além disso, a página permite que o usuário edite um handler pelo botão EDIT HANDLER. O botão icon magnifier direciona à página Event Status com os eventos enviados para os tópicos do handler e o usuário pode deletar um handler clicando em icon delete.

Veja abaixo detalhes sobre as abas.

Topics

A aba Topics exibes os tópicos agrupados no handler, com nome e descrição:

handlers overview topics

O usuário pode inserir um novo tópico clicando no botão ADD TOPIC. Se houver muitos tópicos agrupados no handler, o campo de busca por keywords procura por termos usados no nome ou descrição dos tópicos.

É possível editar um tópico clicando em icon edit e excluí-lo clicando em icon delete.

Clicando no ícone icon expand na linha de um tópico, é possível ver a lista de contextos cadastrados e habilitar/desabilitar o tópico para cada contexto (pelo botão da coluna AVAILABLE):

handlers overview topics1

Policy

A aba Policy exibe o nome e descrição da política de segurança e tentativas de envio aplicada ao handler:

handlers overview policy

Clicando no ícone icon change, é possível substituir a política aplicada. Se você clicar sobre o nome da política, será direcionado à tela de overview da política, onde ela pode ser editada. Veja mais sobre políticas aqui).

Clicando no ícone icon expand, a tela exibe os detalhes da política (quantidade de tentativas automáticas de envio, timeout da requisição, códigos de estado que disparam novas tentativas de envio e interceptores de segurança aplicados):

handlers overview policy1

Publishers

A aba Publishers lista os publicadores cadastrados para enviar eventos para os tópicos do handler, exibindo nome, client ID (com caracteres ofuscados, fora o primeiro e o último), email do desenvolvedor responsável pelo publicador e estado (entre aprovado, pendente, rejeitado e cancelado):

handlers overview publishers

Se houver muitos publicadores para os tópicos do handler, o campo de busca por nome ajuda a encontrar o desejado. Se você clicar sobre o nome do publicador, será direcionado à tela de overview dele, onde ele pode ser editado. Veja mais sobre publishers aqui).

Clicando no ícone icon expand na linha de um publicador, a tela exibe os tópicos habilitados para ele, com o contexto vinculado, descrição e o caminho formado por <context>/<handler>/<topic>:

handlers overview publishers1
Após as publicações serem recebidas pelo Events Hub, o publisher é exibido na listagem de eventos da tela Event Status. Mas, para que essa identificação ocorra, é necessário que exista um interceptor que valide client ID como parte da política aplicada ao handler (seja OAuth Validation ou Client ID Validation).

Subscribers

A aba Subscribers lista os subscritores cadastrados para receber eventos dos tópicos do handler, exibindo nome, email do desenvolvedor responsável pelo subscritor e estado (entre aprovado, pendente, rejeitado e cancelado):

handlers overview subscribers

Se houver muitos subscritores para os tópicos do handler, o campo de busca por nome ajuda a encontrar o desejado. Se você clicar sobre o nome do subscritor, será direcionado à tela de overview dele, onde ele pode ser editado. Veja mais sobre subscribers aqui).

Clicando no ícone icon expand, a tela exibe os tópicos habilitados para cada subscritor, com o contexto vinculado, o caminho formado por <context>/<handler>/<topic> e a URL do subscritor, para a qual o Events Hub encaminha as publicações:

handlers overview subscribers1

Veja mais sobre handlers

  • Veja sobre a criação de handlers na próxima página.

  • As políticas de segurança e tentativas de envio são aplicadas a nível de handler. Veja mais sobre elas aqui.

  • É possível utilizar handlers para filtrar a listagem de eventos recebidos e distribuídos pelo Events Hub na tela Event Status.

Thanks for your feedback!
EDIT
How useful was this article to you?