2017-09-19 85 views
0

假設我有一個託管服務器的gRPC Java服務。當客戶端要調用這個服務gRPC - 爲同一臺服務器建立一個通道

所以,他們使用:

ManagedChannel channel = ManagedChannelBuilder 
     .forAddress(grpcHost, grpcPort) 
     .usePlaintext(true) 
     .build(); 

沒問題。

現在如果我想從同一個JVM調用我的服務呢?這甚至有可能嗎?或者這可能完全無效?

+0

這是可能的,它工作正常。對於這種情況,您可能對InProcessServer和InProcessChanell感興趣。 https://github.com/grpc/grpc-java/blob/master/testing/src/main/java/io/grpc/testing/GrpcServerRule.java –

回答

1

您可以使用普通的ManagedChannelBuilder連接到相同的JVM。它會像平常一樣工作。

如果您想優化案例,因爲它可能會頻繁發生並且位於同一個ClassLoader中(例如,它在Servlet之間不起作用),您可以使用in-process transport。進程內傳輸的開銷相對較低,甚至可以避免序列化/反序列化Protobufs。

相關問題