2016-12-22 39 views
2

在我們的Java應用程序中,我們需要接受(大)Grpc消息,提取一個字段,然後根據該字段的值將消息轉發到另一個服務器。如何在Grpc/Protobuf中進行路由和避免反序列化?

我試圖避免在傳遞消息之前完全反序列化消息的開銷。

這樣做的一種方法是將字段作爲單獨的查詢或標頭參數發送,但Grpc不支持它們。

另一種方法是從有效載荷中只提取感興趣的字段,但Protobuf不支持部分或選擇性的反序列化。

我該怎麼辦?

+0

看來你在其他地方得到了迴應。只需將其標記爲未來路人... https://groups.google.com/forum/#!topic/grpc-io/lrSj2iuMx3A – user

回答

0

你可以做到這一點的一種方法是在服務器端進行。當服務器即將發送響應時,它可以提取該字段並將其設置爲發送的初始報頭的一部分。您可以使用ServerInterceptor從響應中提取所需的字段並將其添加到Metadata

除此之外,協議緩衝區當前要求您在訪問內部字段之前解析消息。

相關問題