Hyperlane'da Prologue ve Epilogue Makroları
Middleware, Hyperlane'da istek işleme sürecinin bel kemiğidir. Çoğu kişi standart istek ve yanıt middleware'lerini kullanır. Ancak Hyperlane, ekstra kontrol için özelleşmiş prologue ve epilogue makroları sunar.
Bu makrolar, istek yaşam döngüsünün en başında ve en sonunda çalışır. Verilerin istemciye tam olarak ne zaman ulaşacağını kontrol etmenizi sağlarlar.
İstek Yaşam Döngüsü:
• İstek gelir: Sunucu HTTP isteğini alır. • Prologue aşaması: Başlıklar veya durum kodları gibi başlangıç verilerini gönderirsiniz. • Middleware zinciri: Fonksiyonlar isteği işler. • Route handler: Sistem yanıtı oluşturur. • Yanıt middleware'i: Fonksiyonlar yanıtı işler. • Epilogue aşaması: Nihai veriler istemciye aktarılır ve bağlantılar kapatılır.
- ve 6. adımları yönetmek için bu makroları kullanın.
Send Makroları:
Kritik olmayan veriler için #[try_send] kullanın. Bir bağlantı koparsa, hatayı sistemi çökertmeden yönetir. Bu, tek bir veri parçasının (chunk) kaybolmasının sorun teşkil etmediği akış (streaming) işlemleri için uygundur.
Kritik veriler için #[send] kullanın. Bu, verinin iletilmesini sağlar.
Flush Makroları:
Tampon belleği (buffer) temizlemeyi denemek ve hataları düzgün bir şekilde yönetmek için #[try_flush] kullanın.
Tüm tamponlanmış verileri istemciye zorla göndermek için #[flush] kullanın. Bağlantıyı kapatmadan önce veri kaybını önlemek için bunu kullanın.
En İyi Uygulamalar:
- Kopan bağlantılarda çökme yaşamamak için akış verileri (streaming data) için #[try_send] kullanın.
- Veri iletimi zorunlu olduğunda #[send] kullanın.
- Bir bağlantıyı kapatmadan önce her zaman tampon belleğinizi boşaltın (flush).
- Bağlantı yeniden kullanımını yönetmek için epilogue kısmında stream.is_keep_alive() kontrolü yapın.
- Gerçek zamanlı güncellemeleri iletmek için Server-Sent Events (SSE) ile bu makroları kullanın.
- Sistem hatalarını önlemek için tüm send ve flush hatalarını yönetin.
Bu araçlar, veri akışı ve yanıt zamanlaması üzerinde size hassas bir kontrol sağlar.
Kaynak: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Proje Kodu: https://github.com/hyperlane-dev/hyperlane