2016-12-22 4 views
2

В нашем приложении Java нам нужно принять (большое) сообщение Grpc, извлечь поле, а затем на основе значения этого поля передать сообщение другому серверу.Как сделать маршрутизацию и избежать десериализации в Grpc/Protobuf?

Я пытаюсь избежать накладных расходов, полностью десериализуя сообщение, прежде чем передавать его.

Один из способов сделать это - отправить поле в виде отдельного параметра запроса или заголовка, но Grpc не поддерживает их.

Другим способом было бы извлечь только поле интереса из полезной нагрузки, но Protobuf не поддерживает частичную или выборочную десериализацию.

Как еще я могу это сделать?

+0

Кажется, у вас есть ответ в другом месте. Просто отметьте это для будущих прохожих ... https://groups.google.com/forum/#!topic/grpc-io/lrSj2iuMx3A – user

ответ

0

Один из способов сделать это - сделать это на стороне сервера. Когда сервер собирается отправить ответ, он может извлечь поле и установить его как часть отправленных начальных заголовков. Вы можете сделать это, используя ServerInterceptor, чтобы извлечь поле, которое вы хотите получить от ответа, и добавить его в Metadata.

Кроме того, в буферах протокола в настоящее время требуется, чтобы вы разобрали сообщение перед доступом к внутренним полям.

Смежные вопросы