我希望能够根据消息的内容将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调用转发到应执行逻辑的正确版本。