Я пытаюсь понять, как использовать maxQueueSize внутри Hystrix. Согласно моей интерпретации, если сервер не может обслуживать запрос, тогда клиенты будут хранить поток в очереди до тех пор, пока очередь не заполнится, а затем он выдаст исключение. И это поведение не зависит от execute.isolation.thread.timeoutInMilliseconds.
Для демонстрации я написал два простых приложения. «A» - это клиент, который называет «B». В «B» я установил точку останова и вызвал ее из метода «A», аннотированного @ HystrixCommand.
@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?