是否可以选择从其他原始文件导入服务?

时间:2019-10-14 10:16:32

标签: protocol-buffers grpc grpc-java

有时,我们的grpc服务器宕机/不正常,以致我们的客户端无法向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)
 }

有什么方法可以为上述三个服务编写通用的运行状况检查器。下面的链接对于编写一个原型文件的运行状况检查很有用。 https://github.com/grpc/grpc/blob/master/doc/health-checking.md

但是我们需要以通用方式编写它,例如创建一个运行状况原型并将其实现到所有grpc服务器原型文件中。这里的问题是我们可以导入消息,但不能导入服务方法。。如果您遇到撰写健康检查的问题,请分享您的评论。

1 个答案:

答案 0 :(得分:0)

我不太明白为什么需要在某处导入运行状况服务,您必须实现此服务并将其添加到每个服务器中。

另一种选择是使用GRPC Services依赖关系,它提供了HealthServiceImpl中描述的健康服务(your link)的实现。 您将创建一个HealthStatusManager实例来管理运行状况检查服务。然后将通过#getHealthService()方法检索到的服务添加到您的服务器中。