반응형
Spring WebFlux에서 Flux를 subscribe하고 Flux 변수를 return할 경우 아래와 같이 경고가 발생함.
Inspection Description을 보면 아래와 같음.
Calling 'subscribe' in non-blocking context is not recommended
Inspection info:
Reports subscribe() calls in "reactive" methods.
Methods returning a Publisher type (including Flux and Mono) should not call the subscribe() method directly because it can break the reactive call chain.
Instead of using subscribe(), consider using composition operators like flatMap(), zip(), then(), and so on.
Example:
Flux<String> stringFlux(){
Flux<String> flux = Flux.just("abc");
flux.subscribe(); // <- blocking 'subscribe' call in non-blocking context
return flux;
}
non-blocking context를 subscribe로 block하고 리턴하지 말라는 뜻이다.
반응형
Solution
이는 두가지 방법으로 해결 할 수 있음.
첫번째로 리턴을 하지 않는것.
두번째로 block되지 않게 subscribeOn설정으로 새로운 스레드에서 실행되도록 설정하는 것.
하지만 경로 자체가 intellij의 inspection 기능일 뿐이라 현재 메소드 블럭에서의 subscribeOn 설정만으로 판단함.
따라서 아래와 같이 메소드를 생성해서 subscribeOn을 설정하면 똑같은 경고가 발생함.
그냥 무의미한 return 하지 않는 것으로..
Thank you!
반응형