Contexts

Contextos são uma divisão lógica que funciona como marcador da URL de publicação de eventos. Eles permitem reutilizar tópicos em diferentes cenários.

O servidor externo de autorização é definido por contexto. Isso significa que quando dois contextos diferentes são disponibilizados para um tópico, é possível utilizar dois endpoints distintos de autorização para o mesmo tópico.

A tela Contexts lista todos os contextos cadastrados no seu Events Hub:

contexts

Como funciona

Para entender como os contextos funcionam, é importante saber como o Events Hub coordena a publicação e subscrição a eventos:

  • Os publicadores de eventos (publishers) enviam requisições ao Events Hub, que as distribui para todos os subscritores (subscribers) cadastrados.

  • Para garantir que os eventos do publicador sejam entregues aos subscritores corretos, o Events Hub utiliza tópicos.

  • Cada tópico pode ter diversos subscritores.

  • Quando um publicador envia um evento para um tópico específico, o Events Hub distribui esse evento para todos os subscritores vinculados ao tópico.

URL de publicação de eventos

Para publicar eventos, você precisa criar um caminho (URL) que serve como canal de envio de eventos de um publicador até o Events Hub.

Essa URL é formada por URL base + context + handler + topic:

  1. URL base: é definida pelo Events Hub. Ela inclui o endereço da interface de cada cliente + event-receiver + um código único (hash).

  2. Contexto, handler e tópico: são criados por você. Eles ajudam a organizar e gerenciar diferentes canais de publicação.

    • Tópico é o nível mais específico.

    • Handlers são os agregadores de tópicos, servindo como uma camada lógica de agrupamento.

    • Contextos adicionam mais um nível de agrupamento, permitindo usar o mesmo tópico em diferentes situações. Para habilitar um tópico a um publicador, você precisa ativá-lo em pelo menos um contexto.

Imagine que você quer criar um fluxo de publicação de vários tipos de alerta e testá-lo sem notificar os subscritores. Para fazer isso, pode:

  1. criar um handler chamado "Alerts", com o path /alerts;

  2. cadastrar tópicos agrupados no handler. Por exemplo: /latency para alertas de latência e api-update para alertas de atualização das APIs;

  3. criar um contexto para testes (por exemplo, testing) e habilitá-lo para o tópico que deseja testar, fazendo com que os subscritores não recebam alertas.

    • Para cadastrar subscritores no contexto de teste, você deve vinculá-los ao tópico e habilitá-los somente para o contexto testing.

    • Se não cadastrar nenhum contexto, o Events Hub define "Default" como padrão, e nenhum marcador é adicionado à URL de publicação.
      Portanto, requisições para o tópico latency ou api-update serão enviadas para <url-base>/alerts/latency/<url-base>/alerts/api-update e todos os subscritores ativos nele receberão os eventos.

Levando em conta o exemplo acima, as URLs de publicação para o tópico latency serão:

  • Contexto Default: <url-base>/alerts/latency

  • Contexto Testing: <url-base>/testing/alerts/latency

A maior vantagem de usar contextos diferentes é poder reutilizar as configurações de políticas de segurança e tentativas de entrega definidas no handler, sem precisar criar novos tópicos. E como os endpoints de autorização são definidos por contexto, você pode usar um mock de autorização para testes enquanto mantém a autorização do contexto padrão inalterada.

  • Os contextos são divisões lógicas para facilitar a criação e manutenção de tópicos, permitindo reutilizá-los em diferentes cenários. Eles não são ambientes fisicamente separados uns dos outros.

  • Isso quer dizer que, se você usa o contexto "Default" para eventos produtivos e o contexto "Testing" para eventos de teste, consegue controlar os publicadores, subscritores e endpoints de autorização para cada contexto. No entanto, todos os eventos recebidos e distribuídos no Events Hub compartilham a mesma infraestrutura.

  • Testes que sobrecarreguem a infraestrutura, mesmo feitos no contexto de teste, poderão afetar o recebimento e distribuição de eventos nos outros contextos.

Autorização

Os endpoints que validam os publicadores são definidos para cada contexto. Isso é feito na tela Authorizations, que contém duas seções: OAUTH e JWT. Em ambas são mostrados todos os contextos cadastrados no Events Hub, indicando a URL de autorização que está definida para cada um.

A utilização de interceptores de segurança é opcional. No entanto, se adicionar policies ao seu handler, você precisa configurar a URL do Authorization vinculado ao interceptor. Com exceção do "IP Filtering Validation", todos dependem dessa configuração para funcionar.

Vincular contextos

Os contextos são vinculados aos tópicos através da aba Topics na criação ou edição de handlers. Para publicar eventos, você relaciona os tópicos e seus contextos a publicadores e subscritores. Isso ocorre da seguinte forma:

  1. Publicadores: na etapa Topics durante o registro do publicador, selecione os tópicos desejados. Você verá os contextos disponíveis para cada tópico.

    1. Escolha em qual o publicador terá permissão para publicar.

  2. Subscritores: ao cadastrar um subscritor, você deve inscrevê-lo nos tópicos de que receberá eventos. Habilitando contextos do tópico a ele, apenas receberá eventos dos publicadores ativos no contexto.

    1. No cadastro do subscritor, na etapa Topics, selecione os tópicos desejados. Você verá os contextos disponíveis para cada tópico.

    2. Escolha de qual o subscritor receberá eventos.

Criando contextos

Você pode criar até 5 contextos no Events Hub. O contexto "Default" é padrão e não pode ser editado ou excluído.

Ao atingir o limite de contextos criados, o botão + será desabilitado, impedindo o cadastro. Se precisar de um novo contexto, você precisará excluir um dos existentes.

Para criar um novo contexto, clique no botão +. Preencha os campos:

  • Name: nome único identificador do contexto.

  • Path: caminho do contexto, que servirá como marcador da URL de publicação.

  • Description: descrição opcional para o contexto.

Após registrá-lo, o contexto será exibido na etapa TOPICS de criação/edição de handlers e poderá ser habilitado para qualquer tópico.

contexts create

Overview de contextos

Ao clicar sobre o nome de um contexto, você verá os tópicos vinculados a ele. Nesta tela, é possível:

  • buscar um tópico usando o campo Keywords. A busca procura por nome ou descrição dos tópicos e nome do handler;

  • editar o contexto pelo botão EDIT CONTEXT. Essa opção permite editar nome, path e descrição do contexto;

  • ver detalhes de um tópico clicando sobre o nome na coluna Handler. Ao fazer isso, você será direcionado à aba TOPICS, na página de Handlers;

  • deletar o contexto clicando no ícone icon delete.

Só é possível excluir contextos que não estão associados a nenhum tópico. Se estiverem, você precisará desabilitar o contexto em cada tópico para poder excluí-lo.
Thanks for your feedback!
EDIT
How useful was this article to you?