리액터에서는 일정 시점에 특정 메소드를 트리거할 수 있는 hooks를 제공한다.
1. Dropping Hooks
Dropping Hooks는 제대로 동작은 하지만 Reactive 사양을 지키지 않은 경우 동작한다.
ex) onComplete() 연산자가 호출된 후 onNext(), onError() 연산자가 호출된 경우
-> onErrorDropped, onNextDropped (즉 특정 연산자가 drop 됐다는 훅)
2. Internal Error Hooks
특정 연산자가 실행되는 도중 에러가 난 경우 동작한다.
ex) onOperatorError
이런 에러 훅은 런타임 에러가 발생했다는 의미이며, 특히 멀티 쓰레딩을 하는 webflux에서는 하나의 쓰레드가 여러 request를 처리하기 때문에, 이런 에러를 핸들링하지 않으면 여러 요청이 다 죽어버리는 결과를 초래한다. 따라서 매우 주의해서 에러 처리를 해줘야한다!
3. Assembly Hooks
ex) 각 연산자마다 호출하고 싶은 메서드가 있다면 onEachOperator 훅을 사용한다.
-> 사용 예시로는 연산자마다 publisher를 바꿔주고 싶은 경우?
참고 자료
https://projectreactor.io/docs/core/release/reference/#hooks
https://m.blog.naver.com/gngh0101/221560774000