【发布时间】:2019-06-11 02:09:06
【问题描述】:
我尝试了解如何在 Hystrix 中使用 maxQueueSize。根据我的解释,如果服务器无法为请求提供服务,那么客户端会将线程存储在队列中,直到队列已满,然后抛出异常。而且这种行为与 execution.isolation.thread.timeoutInMilliseconds 无关。
为了演示它,我编写了两个简单的应用程序。 “A”是调用“B”的客户端。在“B”中,我设置了一个断点并从使用@HystrixCommand 注释的方法“A”中调用它。
@HystrixCommand(fallbackMethod = "fallback", commandProperties = {
@HystrixProperty(name =
"execution.isolation.thread.timeoutInMilliseconds", value = "20000"),
}, threadPoolProperties = {
@HystrixProperty(name = "coreSize", value = "1"),
@HystrixProperty(name = "maxQueueSize", value = "2"),
@HystrixProperty(name = "queueSizeRejectionThreshold", value = "2")
},)
我已经发送了 6 个请求,但没有一个被拒绝,尽管阈值设置为 2。当然,每个线程按照定义在 20000 毫秒后停止。 maxQueueSize 和 queueSizeRejectionThreshold 应该如何工作?
【问题讨论】:
-
你考虑过阅读the documentation吗?
-
是的,我有,但没听懂。