2016-12-22 3 views
2

Java 응용 프로그램에서 (큰) Grpc 메시지를 허용하고 필드를 추출한 다음 해당 필드의 값을 기반으로 메시지를 다른 서버로 전달해야합니다.Grpc/Protobuf에서 라우팅을 수행하고 deserialization을 피하는 방법은 무엇입니까?

메시지를 전달하기 전에 메시지를 완전히 deserialize하는 오버 헤드를 피하려고합니다.

이 작업을 수행하는 한 가지 방법은 별도의 쿼리 또는 헤더 매개 변수로 필드를 보내는 것이지만 Grpc에서는 필드를 지원하지 않습니다.

또 다른 방법은 페이로드에서 관심있는 필드 만 추출하는 것이지만 Protobuf는 부분적 또는 선택적으로 deserialization을 지원하지 않습니다.

어떻게 그럴 수 있습니까?

+0

다른 곳에서도 응답이있는 것으로 보입니다. 미래의 지나가는 사람들을 위해 그것을 표시하십시오 ... https://groups.google.com/forum/#!topic/grpc-io/lrSj2iuMx3A – user

답변

0

이렇게 할 수있는 방법 중 하나는 서버 측에서 수행하는 것입니다. 서버는 응답을 보내려고 할 때 필드를 추출하여 보낸 초기 머리글의 일부로 설정할 수 있습니다. ServerInterceptor을 사용하여 응답에서 원하는 필드를 추출하고 Metadata에 추가하여이 작업을 수행 할 수 있습니다.

이외에도 프로토콜 버퍼는 현재 내부 필드에 액세스하기 전에 메시지를 구문 분석해야합니다.