【发布时间】:2018-02-23 14:09:15
【问题描述】:
我正在使用 hystrix 在我的 springboot 服务中实现断路器概念。我在需要限制外部服务调用的方法上使用的 HystrixCommand 注释如下:
@HystrixCommand(commandKey = "myCommandKey",
groupKey = "myGroupKey",
threadPoolKey = "myThreadPoolKey")
public String myHystrixMethod(String someParam) { ....}
现在,myHystrixMethod 所在的服务被不同的客户端调用。根据调用服务的客户端类型,有一种逻辑可以调用为该特定客户端指定的后端服务。
我想做的是在它自己的 hystrix 线程池中注册由特定客户端调用的所有线程(请求)。这意味着,来自客户端 A 的请求将在客户端 A 的 hystrix 线程池中注册,而客户端 B 的请求将在客户端 B 的 hystrix 线程池中注册。这将确保客户端 B 对我的服务的请求不会由于客户端 A 的故障而受到限制。
为此,我可以为每个客户端创建单独的服务方法(如上所示)并相应地命名 hystrix 线程池。但是,使用这种方法,每当有新客户端时,我都必须修改源代码以添加它的服务方法。
有没有一种方法可以根据参数动态创建 @HystrixCommand 注释内的选项,在这种情况下是客户端 ID?
【问题讨论】:
-
我认为不可能。看一看。 github.com/Netflix/Hystrix/issues/350
-
看起来用 hystrix 是不可能的。是否有任何其他断路器解决方案,如 hystriix,具有动态创建此类属性的不错选择?
-
还有其他库,例如 jrugged 和 Resilience4j。但我不认为你会在那里找到这个功能。看看,让我们知道。 :)
标签: spring-boot hystrix