我在互联网上看到了这个示例,并且想知道,为什么您要使用流仅向回发1条消息?仅返回一元不是更有效吗?
@Override
public void getFeature(Point request, StreamObserver<Feature> responseObserver) {
responseObserver.onNext(checkFeature(request));
responseObserver.onCompleted();
}
...
private Feature checkFeature(Point location) {
for (Feature feature : features) {
if (feature.getLocation().getLatitude() == location.getLatitude()
&& feature.getLocation().getLongitude() == location.getLongitude()) {
return feature;
}
}
// No feature was found, return an unnamed feature.
return Feature.newBuilder().setName("").setLocation(location).build();
}
首先,该示例用于说明流媒体概念。在这种特殊情况下,碰巧它最终只回发了一条消息。但是,需要针对最普遍的情况设计API,在这种情况下,对于给定的位置,可能有多个功能,并且由于某种原因,它们不能在一元响应中组合成一个数组。
[好吧,显然我对Java和C#中gRPC的区别感到困惑。我曾经使用C#进行开发,但是在Java中,对于Unary gRPC,他们使用streamObserver对象进行响应。这很令人困惑...