-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
마이크로 서비스를 사용하려고 하는데 질문이 있습니다.
23.11.16 14:49 작성 조회수 141
0
tcp통신을 이용해서 마이크로 서비스를 만들고 있습니다.
마이크로 서비스는 3000번으로 포트를 켜놨고,
게이트웨이의 포트는 4000번으로 실행을 하게끔 해놨습니다.
제가 우선 테스트를 위해서 user의 레포지토리에서 데이터를 전체 긁어오게끔 간단한 로직을 짜놨는데요.
// 게이트웨이 컨트롤러
@Get("/users")
@UseGuards()
async GetUsers() {
return this.organizationService.getUsers();
}
// 게이트웨이 서비스
getUsers() {
return this.clients.send("get:getUsers", {});
}
// 마이크로 서비스
@MessagePattern({ cmd: "get:getUsers" })
async getUsers() {
console.log("걸림");
return pipe(
await this.userRepository.find({
relations: [ /* 관계 설정 */],
}),
(users) => ({
success: true,
users: {
users: users.map((user) => (
// 유저 정보들
),
},
}),
);
}
localhost:3000/api/users 경로로 요청 결과는 500에러가 나오고 콘솔에는
[Nest] 3096 - 2023. 11. 16. 오후 2:45:20 ERROR [ExceptionsHandler] There is no matching message handler defined in the remote service.
이렇게 메시지 핸들러가 일치하지 않다는데 대체 뭐가 잘못된건지를 모르겠습니다.
메시지 패턴 이름도 같게 해놨는데 말이죠.
답변을 작성해보세요.
1
조현영
지식공유자2023.11.16
send에서도 { cmd: 'get:getUsers' } 객체를 보내셔야 합니다.
공식문서 참고하세요.
https://docs.nestjs.com/microservices/basics#sending-messages
답변 1