Как перехватить и переслать вызов GRPC в зависимости от содержания сообщения
Я хочу быть в состоянии переслать 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-вызов на правильную версию, которая должна выполнять логику.