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