当您的Hystrix命令从HystrixCommand
扩展时,您可以为此指定线程池的队列大小:
..
.andThreadPoolPropertiesDefaults(HystrixThreadPoolProperties.Setter()
.withMaxQueueSize(10)
.withQueueSizeRejectionThreshold(10));
但是当从HystrixObservableCommand
扩展时(显然)没有线程池来配置队列大小。但是,当HystrixObservableCommand
达到限制时,您仍然希望允许ExecutionIsolationSemaphoreMaxConcurrentRequests
的排队请求,该怎么办?
答案 0 :(得分:1)
Hystrix并行处理由阻塞队列处理,Hystrix实现似乎会在达到阻塞大小时拒绝请求(并执行回退方法)。似乎没有办法解决这个问题,或者特意检测请求是否因队列大小而被拒绝。
您可以在步骤5的流程中看到这一点。他们的线程池或信号量拒绝回退到默认值。它没有任何配置任何其他阻塞队列的选项。
https://raw.githubusercontent.com/wiki/Netflix/Hystrix/images/hystrix-command-flow-chart.png
我不确定你是如何解决这个问题的,似乎是Hystrix库的限制/功能