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

Middleware అనేది Hyperlaneలో రిక్వెస్ట్ ప్రాసెసింగ్‌కు వెన్నెముక వంటిది. చాలా మంది ప్రామాణికమైన request మరియు response middlewareని ఉపయోగిస్తారు. అయితే, అదనపు నియంత్రణ కోసం Hyperlane ప్రత్యేకమైన prologue మరియు epilogue macrosలను అందిస్తుంది.

ఈ macros రిక్వెస్ట్ లైఫ్‌సైకిల్ (request lifecycle) ప్రారంభంలో మరియు చివరలో రన్ అవుతాయి. డేటా క్లయింట్‌కు ఖచ్చితంగా ఎప్పుడు చేరుతుందో నియంత్రించడానికి ఇవి మీకు అనుమతిస్తాయి.

రిక్వెస్ట్ లైఫ్‌సైకిల్ (The Request Lifecycle):

• Request వస్తుంది: సర్వర్ HTTP రిక్వెస్ట్‌ను అందుకుంటుంది. • Prologue దశ: మీరు headers లేదా status codes వంటి ప్రారంభ డేటాను పంపుతారు. • Middleware chain: ఫంక్షన్లు రిక్వెస్ట్‌ను ప్రాసెస్ చేస్తాయి. • Route handler: సిస్టమ్ రెస్పాన్స్‌ను సిద్ధం చేస్తుంది. • Response middleware: ఫంక్షన్లు రెస్పాన్స్‌ను ప్రాసెస్ చేస్తాయి. • Epilogue దశ: చివరి డేటా క్లయింట్‌కు ఫ్లష్ (flush) చేయబడుతుంది మరియు కనెక్షన్లు మూసివేయబడతాయి.

దశ 2 మరియు 6ని నిర్వహించడానికి ఈ macros ఉపయోగించండి.

Send Macros:

నాన్-క్రిటికల్ (non-critical) డేటా కోసం #[try_send] ఉపయోగించండి. ఒకవేళ కనెక్షన్ తెగిపోయినా, ఇది సిస్టమ్ క్రాష్ అవ్వకుండా ఎర్రర్‌ను హ్యాండిల్ చేస్తుంది. ఒక చంక్ (chunk) కోల్పోయినా పర్వాలేదు అనుకునే స్ట్రీమింగ్ (streaming) సందర్భాల్లో ఇది బాగా ఉపయోగపడుతుంది.

క్రిటికల్ (critical) డేటా కోసం #[send] ఉపయోగించండి. ఇది డేటా ఖచ్చితంగా వెళ్లేలా చూస్తుంది.

Flush Macros:

బఫర్‌ను క్లియర్ చేయడానికి ప్రయత్నించడానికి మరియు ఎర్రర్‌లను సున్నితంగా (gracefully) హ్యాండిల్ చేయడానికి #[try_flush] ఉపయోగించండి.

బఫర్ చేయబడిన మొత్తం డేటాను క్లయింట్‌కు పంపడానికి #[flush] ఉపయోగించండి. కనెక్షన్‌ను మూసివేసే ముందు డేటా నష్టాన్ని నివారించడానికి దీనిని ఉపయోగించండి.

ఉత్తమ పద్ధతులు (Best Practices):

  • కనెక్షన్లు తెగిపోయినప్పుడు క్రాష్ అవ్వకుండా ఉండటానికి స్ట్రీమింగ్ డేటా కోసం #[try_send] ఉపయోగించండి.
  • డేటా డెలివరీ తప్పనిసరి అయినప్పుడు #[send] ఉపయోగించండి.
  • కనెక్షన్‌ను మూసివేసే ముందు ఎల్లప్పుడూ మీ బఫర్‌ను ఫ్లష్ చేయండి.
  • కనెక్షన్ పునర్వినియోగాన్ని (connection reuse) నిర్వహించడానికి మీ epilogueలో stream.is_keep_alive()ని తనిఖీ చేయండి.
  • రియల్-టైమ్ అప్‌డేట్‌లను పంపడానికి Server-Sent Events (SSE) కోసం ఈ macros ఉపయోగించండి.
  • సిస్టమ్ వైఫల్యాలను నివారించడానికి అన్ని send మరియు flush ఎర్రర్‌లను హ్యాండిల్ చేయండి.

ఈ సాధనాలు డేటా ప్రవాహం (data flow) మరియు రెస్పాన్స్ టైమింగ్ పైన మీకు ఖచ్చితమైన నియంత్రణను అందిస్తాయి.

Source: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Project Code: https://github.com/hyperlane-dev/hyperlane