728x90
gRPC ManagedChannel Builder 를 이용하여 gRPC stub 을 구성한다.
각 서버 상황에 맞게 Authorization Key, RequestId 를 Header 로 설정한다.
//async stub - stream response 를 처리하는 stub
val stub: XXXServiceGrpc.XXXServiceStub = if (!apikey.isNullOrEmpty()) {
val header = Metadata()
val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)
header.put(key, "$apikey")
MetadataUtils.attachHeaders(XXXServiceGrpc.newStub(channel), header)
} else {
XXXServiceGrpc.newStub(channel)
}
//blocking stub - unary response 를 처리하는 stub
val ttsStub: XXXServiceGrpc.XXXServiceBlockingStub = if (!apikey.isNullOrEmpty()) {
val header = Metadata()
val key = Metadata.Key.of("authorization", Metadata.ASCII_STRING_MARSHALLER)
header.put(key, "$apikey")
MetadataUtils.attachHeaders(XXXServiceGrpc.newBlockingStub(channel), header)
} else {
XXXerviceGrpc.newBlockingStub(channel)
}
- stub 의 종류
1. newStub : async call 로 호출되는 비동기 stub. stream response 처리 시 사용 된다.
2. blockingStub : sync call 로 호출되는 stub. unary response 처리 시 사용된다.
728x90
'Android > gRPC' 카테고리의 다른 글
[M1/M2] Android gRPC 적용 가이드 (0) | 2024.04.26 |
---|---|
Android gRPC Client 구현(1) - gradle 환경 설정 (0) | 2021.10.01 |