Spring WebClient ରେ ପ୍ରକ୍ସି ତ୍ରୁଟି: ରିଆକ୍ଟିଭ୍ ହ୍ୟାଣ୍ଡଲିଂ ବନାମ ଲଗିଂ
ପ୍ରକ୍ସି ବିଫଳତା ସମୟରେ WebClient ର ରିଆକ୍ଟିଭ୍ ତ୍ରୁଟି ସଙ୍କେତ, ଟ୍ରାନ୍ସପୋର୍ଟ ଲଗିଂ ଏବଂ HTTP ସ୍ଥିତି ହ୍ୟାଣ୍ଡଲିଂକୁ ଅଲଗା କରନ୍ତୁ।
ଟ୍ରାନ୍ସପୋର୍ଟ ଏକ ବିଫଳ ପ୍ରକ୍ସି ସଂଯୋଗକୁ ଲଗ୍ କରିପାରେ, ଯେତେବେଳେ ଆପ୍ଲିକେସନ୍ ମଧ୍ୟ ରିଆକ୍ଟିଭ୍ ତ୍ରୁଟିକୁ ଗ୍ରହଣ କରି ହ୍ୟାଣ୍ଡଲ୍ କରେ। କେବଳ ଲଗ୍ ପ୍ରବେଶ ପ୍ରମାଣ କରେ ନାହିଁ ଯେ ଆପ୍ଲିକେସନ୍ର ହ୍ୟାଣ୍ଡଲର୍ ଛାଡିଦିଆଯାଇଛି।
ପ୍ରକୃତରେ ସବସ୍କ୍ରାଇବ୍ ହେଉଥିବା ଶୃଙ୍ଖଳରେ ତ୍ରୁଟି ସଙ୍କେତକୁ ଅନୁସରଣ କରନ୍ତୁ। କେବଳ Mono ନିର୍ମାଣ କରୁଥିବା କୋଡ୍ ଚାରିପାଖରେ try/catch ପରବର୍ତ୍ତୀ ନେଟୱାର୍କ ବିଫଳତା ହ୍ୟାଣ୍ଡଲିଂଠାରୁ ଭିନ୍ନ ପରିସର।
| ଅପରେଟର | ପ୍ରଭାବ |
|---|---|
| doOnError | ତ୍ରୁଟି ଜାରି ରହୁଥିବାବେଳେ ପାର୍ଶ୍ୱ ପ୍ରଭାବ କରେ |
| onErrorMap | ଏକ ତ୍ରୁଟିକୁ ଅନ୍ୟ ତ୍ରୁଟିରେ ରୂପାନ୍ତର କରେ |
| onErrorResume | ବୈକଳ୍ପିକ ପ୍ରକାଶକକୁ ଯାଏ |
ଆପ୍ଲିକେସନ୍କୁ ଆବଶ୍ୟକ ବ୍ୟବହାର ବାଛନ୍ତୁ। ମେଟ୍ରିକ୍ ରେକର୍ଡ କରିବାକୁ ନକଲି ସଫଳ ବିଷୟବସ୍ତୁ ଫେରାଇବା ଆବଶ୍ୟକ ନାହିଁ। ବୈକଳ୍ପିକ ପ୍ରତିକ୍ରିୟା ଆପ୍ଲିକେସନ୍ର ଉଦ୍ଦେଶ୍ୟପୂର୍ଣ୍ଣ ଫଳାଫଳ ହେବା ଉଚିତ, ବିଫଳ ପଥ ଲୁଚାଇବାର ଉପାୟ ନୁହେଁ।
ଟ୍ରାନ୍ସପୋର୍ଟ ବ୍ୟତିକ୍ରମଗୁଡ଼ିକୁ ଗ୍ରହଣ କରାଯାଇଥିବା HTTP ତ୍ରୁଟି ସ୍ଥିତିଠାରୁ ମଧ୍ୟ ଅଲଗା କରନ୍ତୁ। ପ୍ରକ୍ସି ସଂଯୋଗ ସାଧାରଣ ଗନ୍ତବ୍ୟ ପ୍ରତିକ୍ରିୟା ପୂର୍ବରୁ ବିଫଳ ହୋଇପାରେ, ତେଣୁ HTTP ସ୍ଥିତି ହ୍ୟାଣ୍ଡଲର୍ ପାଖରେ ଯାଞ୍ଚ କରିବାକୁ କିଛି ନ ଥାଇପାରେ। ନିମ୍ନ ସ୍ତରର ବିଫଳତା ନିର୍ଣ୍ଣୟ କରିବା ସମୟରେ WebClientRequestException ର କାରଣ ସଂରକ୍ଷିତ ରଖନ୍ତୁ।
ଫଳାଫଳ ବୁଝିବା ପରେ ହିଁ ଲଗିଂ ସମାୟୋଜିତ କରନ୍ତୁ। ସମଗ୍ର ଟ୍ରାନ୍ସପୋର୍ଟ ଲଗର୍ ବନ୍ଦ କଲେ ପରବର୍ତ୍ତୀ ଟାଇମଆଉଟ୍, TLS ସମସ୍ୟା କିମ୍ବା ପ୍ରମାଣୀକରଣ ବିଫଳତା ପାଇଁ ଆବଶ୍ୟକ ପ୍ରମାଣ ହଟିଯାଇପାରେ, ରିଆକ୍ଟିଭ୍ ପାଇପଲାଇନର ବ୍ୟବହାର ନ ବଦଳାଇ।