grpcurl
- gRPC 서버와 통신할 수 있는 command-line tool
- gRPC 서버에 있는 RPC 메소드를 호출하는 것이 목적
- secure/TLS 서버, plain-text 서버를 지원
- Docker, 로컬에서 설치할 수 있다.
grpcurl [flags] [address] [list|describe] [symbol]
address는 다음과 같은 사항에서만 쓰이는 선택 옵션이다.
- list 또는 describe를 사용할 때
- protoset 또는 proto flag가 주어질 때
list
- symbol은 fully-qualified service name
- symbol이 주어졌다면, 해당 서비스의 모든 메서드를 출력
- symbol이 주어지지 않았다면, 모든 노출된 서비스가 출력되거나 protoset에 모든 서비스를 정의한다.
describe
- symbol은 fully-qualified service, enum, or message name.
- symbol이 주어지지 않았으면, 모든 서비스를 출력
address
- "host:port"과 같은 형식
- host는 IP 주소 또는 호스트명
- port는 숫자 포트번호 또는 서비스명
- IPv6 주소는 "[2001:db8::1]"와 같이 []로 감싼다.
flags
내가 자주 사용하는 것 정리
- -d string
- 요청 본문 데이터
- -help
- grpcurl 사용 방법 출력
- -plaintext
- 서버에 연결할 때 plain-text HTTP/2 사용(no TLS)
- -version
- 현재 버전 출력
📌 알아야하는 것
- 어플리케이션 내에서 gRPC 서버를 생성하고 연결한다.
- 기본 포트는 9090
아래 코드들을 추가해주고 👇 참고함
@Configuration(proxyBeanMethods = false)
public class GlobalInterceptorConfiguration {
@GrpcGlobalServerInterceptor
LogGrpcInterceptor logServerInterceptor() {
return new LogGrpcInterceptor();
}
}
public class LogGrpcInterceptor implements ServerInterceptor {
private static final Logger log = LoggerFactory.getLogger(LogGrpcInterceptor.class);
@Override
public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> serverCall, Metadata metadata,
ServerCallHandler<ReqT, RespT> serverCallHandler) {
log.info(serverCall.getMethodDescriptor().getFullMethodName());
return serverCallHandler.startCall(serverCall, metadata);
}
}
🐋 grpcurl을 Docker에서 설치
docker를 실행할 때 Mac 또는 Windows는 localhost 대신에 host.docker.internal을 사용한다.
🟥 로컬에 grpcurl 설치
https://github.com/fullstorydev/grpcurl/releases
👆 grpcurl_1.8.7_windows_x86_64.zip로 다운받았다.
각자 OS에 따라서 설치하면 된다.
환경변수 설정도 했다. Path에 grpcurl_1.8.7_windows_x86_64 폴더 경로를 추가
위에서도 말했지만, gRPC 서버와 tomcat 서버는 별개다!!!
gRPC 서버를 정의해주고 포트 번호는 기본이 9090이다.
통신 성공
참고 👇
https://github.com/fullstorydev/grpcurl
https://caddy.community/t/tls-first-record-does-not-look-like-a-tls-handshake/9736
https://docs.docker.com/desktop/networking/
반응형
'Framework > gRPC' 카테고리의 다른 글
gRPC 구현 예제 (0) | 2024.03.21 |
---|---|
[Error] NotSslRecordException & Http2Exception (0) | 2023.04.17 |
gRPC (1) | 2023.03.15 |