是否可以选择从其他原型文件导入服务?
Is there an option to import services from other proto files?
有时我们的 grpc 服务器 down/unhealthy 以至于我们的客户端无法向 grpc 服务器发出请求,在这种情况下我们计划以通用方式编写健康检查。我们有大量的原型缓冲区文件让我们假设
a.proto
syntax = "proto3"
package com.a
message request{
string name = 1;
}
message response{
string name = 1;
}
service testService{
rpc check(request) returns (response)
}
b.proto
syntax = "proto3"
package com.a
message request1{
string name = 1;
}
message response1{
string name = 1;
}
service testService{
rpc check(request1) returns (response1)
}
c.proto
syntax = "proto3"
package com.a
message request2{
string name = 1;
}
message response2{
string name = 1;
}
service testService{
rpc check(request2) returns (response2)
}
有没有办法为以上三种服务编写通用的健康检查程序。 link 以下对于为一个 proto 文件编写健康检查很有用。 https://github.com/grpc/grpc/blob/master/doc/health-checking.md
但是我们需要以通用的方式编写它,比如创建一个健康原型并将其实现到所有 grpc 服务器原型文件中。这里的问题是我们可以导入 message 但不能导入 service method. 。如果你们遇到过编写健康检查的问题,请分享您的评论。
我不太明白为什么你需要在某处导入健康服务,你必须实现这个服务并将它添加到你的每个服务器。
另一种选择是使用 GRPC Services dependency, which provides implementation of health service (HealthServiceImpl) described in your link。
您将创建一个 HealthStatusManager 的实例来管理健康检查服务。然后将通过 #getHealthService()
方法检索到的服务添加到您的服务器。
有时我们的 grpc 服务器 down/unhealthy 以至于我们的客户端无法向 grpc 服务器发出请求,在这种情况下我们计划以通用方式编写健康检查。我们有大量的原型缓冲区文件让我们假设
a.proto
syntax = "proto3"
package com.a
message request{
string name = 1;
}
message response{
string name = 1;
}
service testService{
rpc check(request) returns (response)
}
b.proto
syntax = "proto3"
package com.a
message request1{
string name = 1;
}
message response1{
string name = 1;
}
service testService{
rpc check(request1) returns (response1)
}
c.proto
syntax = "proto3"
package com.a
message request2{
string name = 1;
}
message response2{
string name = 1;
}
service testService{
rpc check(request2) returns (response2)
}
有没有办法为以上三种服务编写通用的健康检查程序。 link 以下对于为一个 proto 文件编写健康检查很有用。 https://github.com/grpc/grpc/blob/master/doc/health-checking.md
但是我们需要以通用的方式编写它,比如创建一个健康原型并将其实现到所有 grpc 服务器原型文件中。这里的问题是我们可以导入 message 但不能导入 service method. 。如果你们遇到过编写健康检查的问题,请分享您的评论。
我不太明白为什么你需要在某处导入健康服务,你必须实现这个服务并将它添加到你的每个服务器。
另一种选择是使用 GRPC Services dependency, which provides implementation of health service (HealthServiceImpl) described in your link。
您将创建一个 HealthStatusManager 的实例来管理健康检查服务。然后将通过 #getHealthService()
方法检索到的服务添加到您的服务器。