如何根据消息内容截取和转发GRPC调用

时间:2018-10-22 11:48:03

标签: protocol-buffers grpc grpc-java grpc-gateway

我希望能够根据消息的内容将RPC调用转发到其他实现。

我正在研究GRPC interceptors,但该网站对此没有很好的解释。我似乎找不到关于该主题的好的文档

我的proto文件如下:

message RPCParameters {
  enum DataSource {
    DS1 = 0;
    DS2 = 1;
    ...
    DS100 = 99;
  }
  int32 param1 = 1;
  ...
  DataSource datasource = 10;
}
...
...

message Result {
...
}

service MyService {
  rpc func1(RPCParameters) returns (Something) {}
  ....
  rpc func100(RPCParameters) returns (Something) {}
}

现在在我的代码中,我想根据数据源值有条件地实现这些功能

目前我正在对每个功能进行条件检查

即:

MyServiceImplementation

implementation func1(params: Params) {
  switch on params.datasource {
     case DS1 => implementation 1
     case DS2 => implementation 2
     ..
     case DS100 => implementation 100
  }
}

implementation func2(params: Params) {
  switch on params.datasource {
     case DS1 => implementation 1
     case DS2 => implementation 2
     ..
     case DS100 => implementation 100
  }
}
...
implementation func100(params: Params) {
  switch on params.datasource {
     case DS1 => implementation 1
     case DS2 => implementation 2
     ..
     case DS100 => implementation 100
  }
}

所以基本上这很麻烦且容易出错-我需要为每个功能添加一堆样板

我想知道我是否可以代替创建其他实现者,然后通过中间件将RPC调用转发到应执行逻辑的正确版本。

0 个答案:

没有答案