Open utterances-bot opened 2 years ago
안녕하세요, 질문이 있습니다. 위 코드에서 보면 nearbystations를 return 하는데요. 그럼 nearbystations 를 가져다 쓰는 입장에서, nearbyststions 값이 채워졌는지는 어떻게 확인할 수 있죠? 결국 nearbystations 가 채워질때까지 wait 하고 있나요?
저도 윗분 댓글과 동일한 질문을 하고 싶네요.
저동 윗분과 동일합니다 결국 wait 을 하게되면 서비스 입장에서는 어디선가는 wait을 함으로서 블락이 되는거라 동일한 결과일듯 한데욤
1년이나 지난 댓글이지만 보고서 저도 궁금증이 생기네요. 제가 이해하기론 Mono 또는 Flux로 감싸서 return을 해줘야 다른 곳에서 해당 스트림 결과에 스트림을 또 연결하는 것으로 이해하고 있는데요. 그렇게 리턴을 받아서 flatMap을 하던, doOnNext로 다음 스트림을 연결시켜야 자연스러운 비동기처리가 되는 것으로 이해하고 사용 중 입니다. 역시 Webflux 세계는 어렵네요, 정확하게 아시는 분이 있다면 답변 부탁드리겠습니다.
저렇게 해서 해결되었다는 포스팅 내용만 봤을땐 webClient 사용한 큰 이유는 없고, 서블릿 기반 처리와 마찬가지로 RestTemplate + @Async 사용한 거랑 같아보이네요.
비동기에서 nearbyststions 을 저런식으로 코딩하면 일관되지 않은 상태(채워져있을 수도, 비어있을수도)를 반환하기 때문에 저런식으로 하면 안될 것 같아요. 필요하다면 Future로 감싸는게 좋을 것 같습니다.
동기와 비동기 with webClient
‘여기서 만나’ 프로젝트를 진행하면서 초반에는 RestTemplate을 통하여 외부 API와 데이터를 주고받았다. 이후 WebClient가 비동기 방식으로 쓰여 더 좋다고 하여 WebClient로 변경했다. 그리고 이전 글에서 RestTemplate…
https://tecoble.techcourse.co.kr/post/2021-10-20-synchronous-asynchronous/?utterances=c16e72b582c58a90f1324049xMMU4rNmawPl0w80Qwr%2BZTYpOiLJPoYiMK5gMlniA28mdoTGjd%2F3KJeACs9qoVl3eMaNSaFN5vsTbz2LCNiFUURyJR9IvFEqJtnLISEvCiX%2BtzfriqUmVo5Mg%2FA%3D