HystrixObservableCommand 的 Hystrix 队列大小?
Hystrix queue size for HystrixObservableCommand?
当您的 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 库
的 limitation/feature
当您的 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 库
的 limitation/feature