ഡെഡ്ലൈൻ ടോക്കൺ ഉപയോഗിച്ച് പ്രോക്സി വഴിയുള്ള .NET HttpClient അഭ്യർത്ഥന റദ്ദാക്കുക
വിളിക്കുന്നയാളുടെ കാത്തിരിപ്പ് മാത്രം അവസാനിപ്പിക്കുന്നതിനുപകരം പ്രോക്സി ഡെഡ്ലൈൻ തീരുമ്പോൾ നെറ്റ്വർക്ക് പ്രവർത്തനം തന്നെ റദ്ദാക്കുക.
നെറ്റ്വർക്ക് ജോലി റദ്ദാക്കാൻ കഴിയുന്ന പ്രവർത്തനത്തിന് ഡെഡ്ലൈൻ നൽകുക. പ്രോക്സി വഴി കോൺഫിഗർ ചെയ്ത നിലവിലുള്ള .NET HttpClient എന്നതിന്:
using var deadline = new CancellationTokenSource(TimeSpan.FromSeconds(20));
using var response = await client.GetAsync(uri, deadline.Token);ആപ്ലിക്കേഷൻ client, uri എന്നിവ നൽകുന്നു. ഈ ഓവർലോഡ് റദ്ദാക്കൽ ടോക്കൺ സ്വീകരിക്കുന്നു; അതിന്റെ ടാസ്കിനായുള്ള കാത്തിരിപ്പിനു ചുറ്റുമുള്ള ടൈംഔട്ട് ആ വിളിക്കുന്നയാളുടെ കാത്തിരിപ്പ് മാത്രമേ പരിമിതപ്പെടുത്തൂ. പൂർത്തീകരണ ഫ്ലാഗ് പോൾ ചെയ്യുന്നതിനും അതേ പ്രശ്നമുണ്ട്: സോക്കറ്റുകളും വർക്കർമാരും തിരക്കിലായിരിക്കുമ്പോൾ വിളിക്കുന്നയാൾക്ക് പോകാം.
റദ്ദാക്കൽ ക്ലയന്റിന്റെ നിർവ്വഹണവും ക്ലീനപ്പ് പാതയും പിന്തുടരുന്നു. താഴ്ന്ന നിലയിലുള്ള ഓരോ പ്രവർത്തനവും കൃത്യമായ നിർദ്ദേശത്തിൽ നിൽക്കുമെന്ന് അത് വാഗ്ദാനം ചെയ്യുന്നില്ല. ആ പാത പൂർത്തിയാകാൻ അനുവദിക്കുകയും പ്രവർത്തനത്തിന് ഉള്ള വിഭവങ്ങൾ വിട്ടയക്കുകയും ചെയ്യുക. ഡിസൈനിൽ വേർതിരിച്ച് നിയന്ത്രിക്കുന്ന ബോഡി വായന ഉൾപ്പെടുത്തുക; ആധുനിക .NET ResponseHeadersRead പ്രവർത്തനത്തിന്, അതേ ടോക്കൺ ബോഡി വായനയിലൂടെ കടത്തിവിടുക. മറ്റ് ക്ലയന്റുകൾ അവയുടെ സ്വന്തം റദ്ദാക്കൽ, നിർത്തൽ, ക്ലീനപ്പ് ഇന്റർഫേസുകൾ നൽകുന്നു.
വീണ്ടുമുള്ള ശ്രമത്തിന് മുൻ ശ്രമത്തിന്റെ ഫലം വേണം. അതിന്റെ ഐഡന്റിഫയറും തിരഞ്ഞെടുത്ത പ്രോക്സിയും സൂക്ഷിക്കുക, ആവശ്യമുള്ളപ്പോൾ റദ്ദാക്കൽ അഭ്യർത്ഥിക്കുക, പകരക്കാരെ അനന്തമായി തുടങ്ങുമ്പോൾ ജോലി നഷ്ടപ്പെടുന്നത് ഒഴിവാക്കുക. അല്ലെങ്കിൽ സാവധാനമുള്ള എൻഡ്പോയിന്റ് ആപ്ലിക്കേഷൻ വിട്ടയക്കുന്നതിനേക്കാൾ വേഗത്തിൽ ജോലി കൂട്ടിയേക്കാം.
വിദൂര ഫലത്തിന് വേർതിരിച്ച കൈകാര്യം വേണം. റദ്ദാക്കൽ സംഭവിക്കുമ്പോൾ ലക്ഷ്യസ്ഥാനം ഇതിനകം ഒരു സമർപ്പണം സ്വീകരിച്ചിരിക്കാം. ആപ്ലിക്കേഷന്റെ വീണ്ടെടുപ്പ് അല്ലെങ്കിൽ idempotency നയം ഉപയോഗിക്കുക; പ്രാദേശിക ജോലി നിർത്തുന്നത് വിദൂര പ്രവർത്തനം റദ്ദാക്കുന്നില്ല.