Hyperlane ਵਿੱਚ Prologue ਅਤੇ Epilogue Macros

Middleware, Hyperlane ਵਿੱਚ request processing ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਲੋਕ standard request ਅਤੇ response middleware ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ। ਹਾਲਾਂਕਿ, Hyperlane ਵਾਧੂ ਕੰਟਰੋਲ ਲਈ ਵਿਸ਼ੇਸ਼ prologue ਅਤੇ epilogue macros ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ।

ਇਹ macros request lifecycle ਦੇ ਬਿਲਕੁਲ ਸ਼ੁਰੂ ਵਿੱਚ ਅਤੇ ਬਿਲਕੁਲ ਅੰਤ ਵਿੱਚ ਚੱਲਦੇ ਹਨ। ਇਹ ਤੁਹਾਨੂੰ ਇਹ ਕੰਟਰੋਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ ਕਿ ਡੇਟਾ ਬਿਲਕੁਲ ਕਦੋਂ ਕਲਾਇੰਟ ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ।

The Request Lifecycle:

• Request ਆਉਂਦੀ ਹੈ: ਸਰਵਰ HTTP request ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। • Prologue phase: ਤੁਸੀਂ headers ਜਾਂ status codes ਵਰਗਾ ਸ਼ੁਰੂਆਤੀ ਡੇਟਾ ਭੇਜਦੇ ਹੋ। • Middleware chain: Functions request ਨੂੰ process ਕਰਦੇ ਹਨ। • Route handler: ਸਿਸਟਮ response ਤਿਆਰ ਕਰਦਾ ਹੈ। • Response middleware: Functions response ਨੂੰ process ਕਰਦੇ ਹਨ। • Epilogue phase: ਅੰਤਿਮ ਡੇਟਾ ਕਲਾਇੰਟ ਨੂੰ flush ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ connections ਬੰਦ ਹੋ ਜਾਂਦੇ ਹਨ।

ਸਟੈਪ 2 ਅਤੇ 6 ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਇਹਨਾਂ macros ਦੀ ਵਰਤੋਂ ਕਰੋ।

The Send Macros:

non-critical ਡੇਟਾ ਲਈ #[try_send] ਦੀ ਵਰਤੋਂ ਕਰੋ। ਜੇਕਰ ਕੋਈ connection ਟੁੱਟ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ crash ਕੀਤੇ ਬਿਨਾਂ error ਨੂੰ ਸੰਭਾਲ ਲੈਂਦਾ ਹੈ। ਇਹ streaming ਲਈ ਵਧੀਆ ਹੈ ਜਿੱਥੇ ਇੱਕ chunk ਗੁਆਉਣਾ ਕੋਈ ਸਮੱਸਿਆ ਨਹੀਂ ਹੈ।

critical ਡੇਟਾ ਲਈ #[send] ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਡੇਟਾ ਪਹੁੰਚ ਜਾਵੇ।

The Flush Macros:

buffer ਨੂੰ ਸਾਫ਼ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਅਤੇ errors ਨੂੰ ਸੁਚੱਜੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਣ ਲਈ #[try_flush] ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਸਾਰੇ buffered ਡੇਟਾ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਕਲਾਇੰਟ ਤੱਕ ਪਹੁੰਚਾਉਣ ਲਈ #[flush] ਦੀ ਵਰਤੋਂ ਕਰੋ। Connection ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਡੇਟਾ ਦੇ ਨੁਕਸਾਨ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਦੀ ਵਰਤੋਂ ਕਰੋ।

Best Practices:

  • ਟੁੱਟੇ ਹੋਏ connections 'ਤੇ crash ਤੋਂ ਬਚਣ ਲਈ streaming data ਲਈ #[try_send] ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਜਦੋਂ ਡੇਟਾ ਡਿਲੀਵਰੀ ਲਾਜ਼ਮੀ ਹੋਵੇ ਤਾਂ #[send] ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • Connection ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਹਮੇਸ਼ਾ ਆਪਣੇ buffer ਨੂੰ flush ਕਰੋ।
  • Connection ਦੇ ਮੁੜ-ਵਰਤੋਂ (reuse) ਨੂੰ ਪ੍ਰਬੰਧਿਤ ਕਰਨ ਲਈ ਆਪਣੇ epilogue ਵਿੱਚ stream.is_keep_alive() ਦੀ ਜਾਂਚ ਕਰੋ।
  • Real-time updates ਭੇਜਣ ਲਈ Server-Sent Events (SSE) ਲਈ ਇਹਨਾਂ macros ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਸਿਸਟਮ ਦੀ विफलता (failure) ਨੂੰ ਰੋਕਣ ਲਈ ਸਾਰੇ send ਅਤੇ flush errors ਨੂੰ ਸੰਭਾਲੋ।

ਇਹ ਟੂਲ ਤੁਹਾਨੂੰ data flow ਅਤੇ response timing 'ਤੇ ਸਹੀ ਕੰਟਰੋਲ ਦਿੰਦੇ ਹਨ।

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