Spring WebClient പ്രോക്സി പിശകുകൾ: റിയാക്ടീവ് കൈകാര്യം വേഴ്സസ് ലോഗിംഗ്
പ്രോക്സി പരാജയത്തിൽ WebClient-ന്റെ റിയാക്ടീവ് പിശക് സിഗ്നൽ, ട്രാൻസ്പോർട്ട് ലോഗിംഗ്, HTTP സ്റ്റാറ്റസ് കൈകാര്യം എന്നിവ വേർതിരിക്കുക.
ട്രാൻസ്പോർട്ടിന് പരാജയപ്പെട്ട ഒരു പ്രോക്സി കണക്ഷൻ ലോഗ് ചെയ്യാം, അതേസമയം ആപ്ലിക്കേഷനും റിയാക്ടീവ് പിശക് സ്വീകരിച്ച് കൈകാര്യം ചെയ്യുന്നു. ലോഗ് എൻട്രി മാത്രം ആപ്ലിക്കേഷന്റെ ഹാൻഡ്ലർ ഒഴിവാക്കപ്പെട്ടു എന്ന് തെളിയിക്കുന്നില്ല.
യഥാർഥത്തിൽ സബ്സ്ക്രൈബ് ചെയ്യുന്ന ചെയിനിൽ പിശക് സിഗ്നൽ പിന്തുടരുക. Mono മാത്രം നിർമ്മിക്കുന്ന കോഡിനു ചുറ്റുമുള്ള try/catch, പിന്നീടുള്ള നെറ്റ്വർക്ക് പരാജയം കൈകാര്യം ചെയ്യുന്നതിൽനിന്ന് വ്യത്യസ്തമായ പരിധിയാണ്.
| ഓപ്പറേറ്റർ | ഫലം |
|---|---|
| doOnError | പിശക് തുടരുമ്പോൾ പാർശ്വഫലം നിർവഹിക്കുന്നു |
| onErrorMap | ഒരു പിശകിനെ മറ്റൊരു പിശകാക്കി മാറ്റുന്നു |
| onErrorResume | ബദൽ പ്രസാധകനിലേക്ക് മാറുന്നു |
ആപ്ലിക്കേഷന് ആവശ്യമായ പെരുമാറ്റം തിരഞ്ഞെടുക്കുക. മെട്രിക് രേഖപ്പെടുത്താൻ വ്യാജ വിജയകരമായ ഉള്ളടക്കം തിരികെ നൽകേണ്ടതില്ല. ബദൽ പ്രതികരണം ആപ്ലിക്കേഷന്റെ ബോധപൂർവമായ ഫലമായിരിക്കണം, പരാജയപ്പെട്ട റൂട്ട് മറയ്ക്കാനുള്ള വഴിയല്ല.
ട്രാൻസ്പോർട്ട് എക്സെപ്ഷനുകളെ സ്വീകരിച്ച HTTP പിശക് സ്റ്റാറ്റസുകളിൽനിന്നും വേർതിരിക്കുക. സാധാരണ ലക്ഷ്യ പ്രതികരണം ഉണ്ടാകുന്നതിന് മുൻപ് പ്രോക്സി കണക്ഷൻ പരാജയപ്പെടാം, അതിനാൽ HTTP സ്റ്റാറ്റസ് ഹാൻഡ്ലറിന് പരിശോധിക്കാൻ ഒന്നും ഉണ്ടായില്ലെന്ന് വരാം. താഴ്ന്ന തലത്തിലുള്ള പരാജയം രോഗനിർണയം ചെയ്യുമ്പോൾ WebClientRequestException-ന്റെ കാരണം സൂക്ഷിക്കുക.
ഫലം മനസ്സിലാക്കിയ ശേഷം മാത്രം ലോഗിംഗ് ക്രമീകരിക്കുക. മുഴുവൻ ട്രാൻസ്പോർട്ട് ലോഗർ ഓഫ് ചെയ്യുന്നത് പിന്നീടുള്ള ടൈംഔട്ട്, TLS പ്രശ്നം അല്ലെങ്കിൽ പ്രാമാണീകരണ പരാജയത്തിന് ആവശ്യമായ തെളിവുകൾ നീക്കം ചെയ്തേക്കാം, റിയാക്ടീവ് പൈപ്പ്ലൈനിന്റെ പെരുമാറ്റം മാറ്റാതെ.