HystrixObservableCommand的Hystrix队列大小?

时间:2016-11-21 12:11:22

标签: java hystrix

当您的Hystrix命令从HystrixCommand扩展时,您可以为此指定线程池的队列大小:

..
.andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter()
                            .withMaxQueueSize(10)
                            .withQueueSizeRejectionThreshold(10));

但是当从HystrixObservableCommand扩展时(显然)没有线程池来配置队列大小。但是,当HystrixObservableCommand达到限制时,您仍然希望允许ExecutionIsolationSemaphoreMaxConcurrentRequests的排队请求,该怎么办?

  1. Hystrix是否为此提供任何支持,或者这是你必须自己推出的东西?
  2. 如果是后者那么你将如何以惯用的方式实现这一点?

1 个答案:

答案 0 :(得分:1)

Hystrix并行处理由阻塞队列处理,Hystrix实现似乎会在达到阻塞大小时拒绝请求(并执行回退方法)。似乎没有办法解决这个问题,或者特意检测请求是否因队列大小而被拒绝。

您可以在步骤5的流程中看到这一点。他们的线程池或信号量拒绝回退到默认值。它没有任何配置任何其他阻塞队列的选项。

https://raw.githubusercontent.com/wiki/Netflix/Hystrix/images/hystrix-command-flow-chart.png

我不确定你是如何解决这个问题的,似乎是Hystrix库的限制/功能