我有 2 个具有通用原型文件的微服务:
service GeoService {
rpc GetGeoPoint (GeoRequest) returns (GeoPoint) {};
rpc CreateGeoPoint (GeoPoint) returns (GeoPoint) {};
}
message GeoRequest {
int32 id = 5;
string dateTime = 6;
}
message GeoPoint {
int32 id = 1;
int32 latitude = 2;
int32 longitude = 3;
string dateTime = 4;
}
1 微服务:运行在8081端口。在Akka.grpc上实现gRPC-client。我不会覆盖自动生成的 GeoService 方法,因为它们的唯一目的是将请求(GeoRequest 或 GeoPoint)传递给另一个微服务。
与服务器的连接通过以下方式进行:
val clientSettings = GrpcClientSettings.connectToServiceAt("127.0.0.1", 8080).withTls(false)
val client: GeoServiceClient = GeoServiceClient(clientSettings)
和方法调用:
val savedGeoPoint = client.createGeoPoint(geoPoint)
2 微服务:运行在8080端口。在scalapb-runtime-grpc(不是Akka grpc)上实现gRPC-client。重写的服务器方法用于在存储中保存一些数据并从存储中检索保存的数据:
override def createGeoPoint(geoPoint: GeoPoint): Future[GeoPoint] =
GeoRepository.save(geoPoint)
事实上,1 mictoservice 中的客户端成功调用了服务器(2 微服务)中的 createGeoPoint 方法。传入数据保存到存储。但结果不返回给客户端。客户端微服务中的方法“val savedGeoPoint = client.createGeoPoint(geoPoint)”不返回任何结果。
我错过了一些有用的东西吗?