ຂໍ້ຜິດພາດພຣັອກຊີໃນ Spring WebClient: ການຈັດການແບບ reactive ທຽບກັບການບັນທຶກ log
ແຍກສັນຍານຂໍ້ຜິດພາດແບບ reactive ຂອງ WebClient, ການບັນທຶກ log ຂອງ transport ແລະ ການຈັດການສະຖານະ HTTP ເມື່ອພຣັອກຊີລົ້ມເຫຼວ.
Transport ສາມາດບັນທຶກການເຊື່ອມຕໍ່ພຣັອກຊີທີ່ລົ້ມເຫຼວໄວ້ໃນ log ໃນຂະນະທີ່ແອັບພລິເຄຊັນກໍໄດ້ຮັບ ແລະ ຈັດການຂໍ້ຜິດພາດແບບ reactive ນັ້ນນຳ. ລາຍການ log ຢ່າງດຽວບໍ່ໄດ້ພິສູດວ່າ handler ຂອງແອັບພລິເຄຊັນຖືກຂ້າມໄປ.
ຕິດຕາມສັນຍານຂໍ້ຜິດພາດໃນລະບົບຕ່ອງໂສ້ທີ່ຖືກສະໝັກຢ່າງແທ້ຈິງ. try/catch ອ້ອມຮອບໂຄ້ດທີ່ພຽງແຕ່ສ້າງ Mono ເປັນຂອບເຂດທີ່ແຕກຕ່າງຈາກການຈັດການຄວາມລົ້ມເຫຼວຂອງເຄືອຂ່າຍໃນພາຍຫຼັງ.
| ຕົວດຳເນີນການ | ຜົນກະທົບ |
|---|---|
| doOnError | ເຮັດຜົນຂ້າງຄຽງໃນຂະນະທີ່ຂໍ້ຜິດພາດສືບຕໍ່ |
| onErrorMap | ປ່ຽນຂໍ້ຜິດພາດໜຶ່ງໃຫ້ເປັນຂໍ້ຜິດພາດອື່ນ |
| onErrorResume | ປ່ຽນໄປຫາຜູ້ເຜີຍແຜ່ທາງເລືອກ |
ເລືອກພຶດຕິກຳທີ່ແອັບພລິເຄຊັນຕ້ອງການ. ການບັນທຶກ metric ບໍ່ຕ້ອງການໃຫ້ສົ່ງຄືນເນື້ອຫາທີ່ສຳເລັດປອມ. ການຕອບສະໜອງທາງເລືອກຄວນເປັນຜົນຂອງແອັບພລິເຄຊັນທີ່ຕັ້ງໃຈ, ບໍ່ແມ່ນວິທີປິດບັງເສັ້ນທາງທີ່ລົ້ມເຫຼວ.
ຍັງແຍກຂໍ້ຍົກເວັ້ນຂອງ transport ອອກຈາກສະຖານະຂໍ້ຜິດພາດ HTTP ທີ່ໄດ້ຮັບ. ການເຊື່ອມຕໍ່ພຣັອກຊີອາດລົ້ມເຫຼວກ່ອນທີ່ຈະມີການຕອບສະໜອງປົກກະຕິຈາກປາຍທາງ, ດັ່ງນັ້ນ handler ສະຖານະ HTTP ອາດບໍ່ມີຫຍັງໃຫ້ກວດສອບ. ຮັກສາສາເຫດຂອງ WebClientRequestException ເມື່ອບົ່ງມະຕິຄວາມລົ້ມເຫຼວຊັ້ນຕ່ຳ.
ປັບການບັນທຶກ log ພຽງແຕ່ຫຼັງຈາກເຂົ້າໃຈຜົນແລ້ວ. ການປິດ logger ຂອງ transport ທັງໝົດອາດເອົາຫຼັກຖານທີ່ຕ້ອງການສຳລັບການໝົດເວລາ, ບັນຫາ TLS ຫຼື ການລົ້ມເຫຼວຂອງການພິສູດຕົວຕົນໃນພາຍຫຼັງອອກໄປ, ໂດຍບໍ່ປ່ຽນພຶດຕິກຳຂອງ pipeline reactive.