𝗠𝗮𝗰𝗿𝗼𝘀 𝗱𝗲 𝗣𝗿ó𝗹𝗼𝗴𝗼 𝗲 𝗘𝗽í𝗹𝗼𝗴𝗼 𝗻𝗼 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
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