Configurar a API para eventos server-sent
APLICA-SE A: Desenvolvedor | Básico | Básico v2 | Standard | Standard v2 | Premium
Este artigo fornece diretrizes para configurar uma API no Gerenciamento de API que implementa SSE (eventos enviados pelo servidor). A SSE baseia-se no padrão HTML5 EventSource
para transmitir dados (por streaming) automaticamente para um cliente via HTTP depois que um cliente tiver estabelecido uma conexão.
Dica
O Gerenciamento de API também oferece compatibilidade nativa para APIs WebSocket, que mantêm uma única conexão bidirecional persistente aberta entre um cliente e um servidor.
Pré-requisitos
- Uma instância de Gerenciamento de API existente. Crie uma, se ainda não tiver.
- Uma API que implementa a SSE. Importe e publique a API na sua instância do Gerenciamento de API usando um dos métodos de importação compatíveis.
Diretrizes para SSE
Siga estas diretrizes ao usar o Gerenciamento de API para alcançar uma API de back-end que implementa SSE.
Escolher a camada de serviço para conexões HTTP de execução longa – A SSE depende de uma conexão HTTP de execução longa com suporte em determinados tipos de preço do Gerenciamento de API. Há suporte para conexões de execução longa nas camadas clássicas e v2 do Gerenciamento de API, mas não na camada de Consumo.
Manter as conexões ociosas ativas – se uma conexão entre o cliente e o back-end puder ficar ociosa por 4 minutos ou mais, implemente um mecanismo para manter a conexão ativa. Por exemplo, habilitar um sinal keepalive de TCP no back-end da conexão ou enviar o tráfego do lado do cliente pelo menos uma vez por 4 minutos.
Essa configuração é necessária para substituir o tempo de sessão ocioso de 4 minutos que é imposto pelo Azure Load Balancer, que é usado na infraestrutura do Gerenciamento de API.
Retransmissão de eventos imediatamente para clientes – desligue o buffer de resposta na
forward-request
política para que os eventos sejam retransmitidos imediatamente aos clientes. Por exemplo:<forward-request timeout="120" fail-on-error-status-code="true" buffer-response="false"/>
Evitar outras políticas que armazenam respostas em buffer – determinadas políticas, como
validate-content
, também podem armazenar conteúdo de resposta em buffer e não devem ser usadas com APIs que implementam SSE.Evite registrar em log o corpo da solicitação/resposta do Azure Monitor, do Application Insights e dos Hubs de Eventos: configure o log de solicitações de API para o Azure Monitor ou o Application Insights usando as configurações de diagnóstico. As configurações de diagnóstico permitem registrar o corpo da solicitação/resposta em vários estágios da execução da solicitação. Para APIs que implementam a SSE, isso pode causar buffers inesperados que podem levar a problemas. As configurações de diagnóstico do Azure Monitor e do Application Insights configuradas no escopo global/todas as APIs se aplicam a todas as APIs do serviço. Você pode substituir as configurações para APIs individuais conforme necessário. Ao fazer logon nos Hubs de Eventos, você configura o escopo e a quantidade de informações de contexto para registro em log de solicitação/resposta usando os log-to-eventhubs. Para as APIs que implementam a SSE, verifique se você desabilitou o log do corpo da solicitação/resposta para o Azure Monitor, o Application Insights e os Hubs de eventos.
Desabilitar o cache de resposta – para garantir que o cliente seja notificado em tempo hábil, verifique se o cache de resposta não está habilitado. Para obter mais informações, confira Políticas de cache do Gerenciamento de API.
Testar API sob carga – siga as práticas gerais para testar sua API sob carga para detectar problemas de desempenho ou configuração antes de entrar em produção.
Próximas etapas
- Saiba mais sobre configurar políticas no Gerenciamento de API.
- Saiba mais sobre a capacidade do Gerenciamento de API.