𝗣𝗿𝗼𝗹𝗼𝗴𝘂𝗲 𝗮𝗻𝗱 𝗘𝗽𝗶𝗹𝗼𝗴𝘂𝗲 𝗠𝗮𝗰𝗿𝗼𝘀 𝗶𝗻 𝗛𝘆𝗽𝗲𝗿𝗹𝗮𝗻𝗲
Middleware એ Hyperlane માં રિક્વેસ્ટ પ્રોસેસિંગનો મુખ્ય આધાર (backbone) છે. મોટાભાગના લોકો સ્ટાન્ડર્ડ રિક્વેસ્ટ અને રિસ્પોન્સ middleware નો ઉપયોગ કરે છે. જોકે, Hyperlane વધારાના નિયંત્રણ માટે વિશિષ્ટ prologue અને epilogue macros પ્રદાન કરે છે.
આ macros રિક્વેસ્ટ લાઇફસાયકલની શરૂઆતમાં અને અંતમાં ચાલે છે. તેઓ તમને ડેટા ક્લાયન્ટ સુધી બરાબર ક્યારે પહોંચે છે તેના પર સચોટ નિયંત્રણ રાખવાની મંજૂરી આપે છે.
The Request Lifecycle:
• રિક્વેસ્ટ આવે છે: સર્વર HTTP રિક્વેસ્ટ મેળવે છે. • Prologue ફેઝ: તમે headers અથવા status codes જેવો પ્રારંભિક ડેટા મોકલો છો. • Middleware ચેઇન: ફંક્શન્સ રિક્વેસ્ટને પ્રોસેસ કરે છે. • Route handler: સિસ્ટમ રિસ્પોન્સ બનાવે છે. • Response middleware: ફંક્શન્સ રિસ્પોન્સને પ્રોસેસ કરે છે. • Epilogue ફેઝ: અંતિમ ડેટા ક્લાયન્ટમાં ફ્લશ (flush) થાય છે અને કનેક્શન્સ બંધ થાય છે.
સ્ટેપ 2 અને 6 ને મેનેજ કરવા માટે આ macros નો ઉપયોગ કરો.
The Send Macros:
નોન-ક્રિટિકલ (non-critical) ડેટા માટે #[try_send] નો ઉપયોગ કરો. જો કનેક્શન તૂટી જાય, તો તે ક્રેશ થયા વગર એરરને હેન્ડલ કરે છે. આ સ્ટ્રીમિંગ માટે સારું છે જ્યાં એક ચંક (chunk) ગુમાવવો ઠીક છે.
ક્રિટિકલ (critical) ડેટા માટે #[send] નો ઉપયોગ કરો. આ સુનિશ્ચિત કરે છે કે ડેટા ચોક્કસપણે પહોંચે છે.
The Flush Macros:
બફર (buffer) ક્લિયર કરવાનો પ્રયાસ કરવા અને એરરને યોગ્ય રીતે હેન્ડલ કરવા માટે #[try_flush] નો ઉપયોગ કરો.
બફર કરેલા તમામ ડેટાને ક્લાયન્ટ પર મોકલવા માટે (force કરવા માટે) #[flush] નો ઉપયોગ કરો. કનેક્શન બંધ કરતા પહેલા ડેટા લોસ અટકાવવા માટે આનો ઉપયોગ કરો.
Best Practices:
- તૂટેલા કનેક્શન્સ પર ક્રેશ થવાનું ટાળવા માટે સ્ટ્રીમિંગ ડેટા માટે #[try_send] નો ઉપયોગ કરો.
- જ્યારે ડેટા ડિલિવરી ફરજિયાત હોય ત્યારે #[send] નો ઉપયોગ કરો.
- કનેક્શન બંધ કરતા પહેલા હંમેશા તમારું બફર ફ્લશ કરો.
- કનેક્શનના પુનઃઉપયોગને મેનેજ કરવા માટે તમારા epilogue માં stream.is_keep_alive() તપાસો.
- રિયલ-ટાઇમ અપડેટ્સ મોકલવા માટે Server-Sent Events (SSE) માટે આ macros નો ઉપયોગ કરો.
- સિસ્ટમ નિષ્ફળતા અટકાવવા માટે તમામ send અને flush એરર્સને હેન્ડલ કરો.
આ સાધનો તમને ડેટા ફ્લો અને રિસ્પોન્સ ટાઇમિંગ પર સચોટ નિયંત્રણ આપે છે.
Source: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Project Code: https://github.com/hyperlane-dev/hyperlane