개발자
현재 카프카로 서버간의 restAPI 통신을 구현하려고 하는데요 게시판 생성 요청 서비스를 만들때요. 게시판에는 멤버정보가 들어가는데요 게시판 생성요청 정보에는 게시판 제목 게시판 내용 멤버 id 가 있구요 게시판 생성요청시에 작성자id 를 가지고 멤버 서버로 멤버 정보를 요청하는 방식을 해보려고 합니다. 카프카를 사용할때 1 . 게시판서버 게시판 생성메서드에서 프로듀서로 작성자id 를 특정 토픽에 보내고 2 . 멤버서버에서 컨슈머 리스너를 통해 해당 토픽에 요청정보가 들어오면 3 . 요청을 처리하고 다시 객체를 반환 해줘야 하는데 이것을 다시 프로듀서로 작성하고 4 . 게시판서버에서 리스너로 응답받은 객체를 생성메서드에 주입시켜 게시판을 완성시키려고 했습니다. 찾아보니 컨슈머리스너는 void 이어야 한다고 하더라구요. 그렇게 되면 요청과 응답을 받는것을 어떻게 한 메서드 안에서 처리 해야 할까요 ? 찾아본 방법으로는 kafka rest proxy 라는것도 찾아봤는데 현업에서 사용하는 방법이 따로 있는지 궁금합니다
답변 1
인기 답변
안녕하세요! Client -> 게시판 서버(Web) -> Kafka -> 게시판 서버(Consumer) 의 형태의 Flow 를 동기식으로 처리하시고자 하는거로 이해하였습니다. 다만 Kafka 의 구조상 위에 정리한 Flow 를 동기적으로 수행하는것은 불가능하진 않지만 Kafka 의 장점이 사라지고 트래픽이 많을 경우 게시판 서버의 부하가 클수밖에 없는 형태라 개인적으로는 추천하지 않는 형태입니다. 그것보다는 Client 에서 게시판 생성 요청을 하면 Producer 로 생성 메세지를 Publish 한 뒤에 응답을 줍니다. 응답을 받은 Client 는 consumer 에서 게시판 생성이 완료될때까지 주기적으로 Polling 을 하며 대기하는 Flow 가 좀더 자연스러운 방향으로 생각됩니다. Kafka Rest Proxy 는 Kafka 에서 제공하는 기능을 HTTP Rest API 형태로 쓸수 있게 해주는 컴포넌트로 현재 구현에 사용하시는 Producer 나 Consumer(리스너 라고 말씀하시는 부분)를 HTTP API 로 대체할 수 있는 형태라고 이해하시면 됩니다. 저의 짧은 지식이 조금이나마 도움이 되시길 바라겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!