𝗠𝗮𝗰𝗿𝗼𝘀 𝗱𝗲 𝗣𝗿ó𝗹𝗼𝗴𝗼 𝗲 𝗘𝗽í𝗹𝗼𝗴𝗼 𝗻𝗼 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲

O middleware é a espinha dorsal do processamento de requisições no Hyperlane. A maioria das pessoas utiliza middlewares padrão de requisição e resposta. No entanto, o Hyperlane oferece macros especializadas de prólogo e epílogo para um controle extra.

Essas macros são executadas no início e no fim do ciclo de vida da requisição. Elas permitem que você controle exatamente quando os dados chegam ao cliente.

O Ciclo de Vida da Requisição:

• A requisição chega: O servidor recebe a requisição HTTP. • Fase de prólogo: Você envia dados iniciais como cabeçalhos ou códigos de status. • Cadeia de middleware: Funções processam a requisição. • Manipulador de rota: O sistema constrói a resposta. • Middleware de resposta: Funções processam a resposta. • Fase de epílogo: Os dados finais são enviados para o cliente e as conexões são fechadas.

Use essas macros para gerenciar as etapas 2 e 6.

As Macros de Envio (Send Macros):

Use #[try_send] para dados não críticos. Se uma conexão cair, ela trata o erro sem causar uma falha no sistema. Isso é ideal para streaming, onde perder um fragmento é aceitável.

Use #[send] para dados críticos. Isso garante que os dados sejam enviados.

As Macros de Limpeza (Flush Macros):

Use #[try_flush] para tentar limpar o buffer e tratar erros de forma suave.

Use #[flush] para forçar todos os dados em buffer para o cliente. Use isso para evitar a perda de dados antes de fechar uma conexão.

Melhores Práticas:

  • Use #[try_send] para dados de streaming para evitar falhas em conexões interrompidas.
  • Use #[send] quando a entrega de dados for obrigatória.
  • Sempre limpe o seu buffer antes de fechar uma conexão.
  • Verifique stream.is_keep_alive() no seu epílogo para gerenciar o reuso de conexões.
  • Use essas macros para Server-Sent Events (SSE) para enviar atualizações em tempo real.
  • Trate todos os erros de envio (send) e limpeza (flush) para evitar falhas no sistema.

Essas ferramentas oferecem controle preciso sobre o fluxo de dados e o tempo de resposta.

Fonte: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Código do Projeto: https://github.com/hyperlane-dev/hyperlane