我希望能够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) {}
}
现在在我的代码中,我想根据数据源值有条件地实现函数
目前我正在对每个函数进行条件检查
IE:
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 调用转发到应该执行逻辑的正确版本。