Я использую hystrix для реализации концепции автоматического выключателя в моем сервисе springboot. Аннотация HystrixCommand, которую я использую для метода, который должен регулировать вызовы внешних служб в случае порогового количества сбоев, выглядит следующим образом:
@HystrixCommand(commandKey = "myCommandKey",
groupKey = "myGroupKey",
threadPoolKey = "myThreadPoolKey")
public String myHystrixMethod(String someParam) { ....}
Теперь служба, в которой находится myHystrixMethod, вызывается разными клиентами. В зависимости от типа клиента, который вызывает службу, существует логика вызова серверной службы, предназначенной для этого конкретного клиента.
Я хотел бы зарегистрировать все потоки (запросы), вызываемые конкретным клиентом, в его собственном пуле потоков hystrix. Это означает, что запросы от клиента A будут регистрироваться в пуле потоков hystrix для клиента A, а для клиента B - в пуле потоков hystrix только для клиента B. Это гарантирует, что запросы клиента B к моей службе не будут задушены из-за сбоев в клиенте A.
Для этого я могу создать отдельные методы обслуживания (показанный выше) для каждого клиента и соответствующим образом назвать пул потоков hystrix. Однако при таком подходе всякий раз, когда появляется новый клиент, мне придется изменить исходный код, чтобы добавить его сервисный метод.
Есть ли способ динамически создавать параметры внутри аннотации @HystrixCommand на основе параметра, которым в данном случае является идентификатор клиента?