Я пытаюсь перейти с Hystrix на Resilience4j и попробовал вариант настройки resilience4j с использованием аннотаций (https://resilience4j.readme.io/docs/getting-started-3), который использует зависимость resilience4j-spring-boot2.
Когда я протестируйте его и проанализируйте журналы, даже метод, украшенный @CircuitBreaker, работает в том же потоке http-nio:
журналы с аннотацией CircuitBreaker:
2020-01 -10 10: 31: 15,996 [ http-nio-8080-exe c -1 ] INFO APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = 1 | TRACE_ID = eb88d5c53ab97a40 | SPAN_ID = eb88d5c53ab97a40 | CLIENT_ID = 1 | CLIENT_VERSION = 1 | a. c .simpdependent.DependentApi - Запрос: http://example.api.com/api/customers/John
2020-01-10 10: 31: 15,997 [ http-nio-8080-exe c -1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = 1 | TRACE_ID = eb88d5c53ab97a40 | SPAN_ID = eb88d5c53ab97a40 | CLIENT_ID = 1 | CLIENT_VERSION = 1 | a. c .simyservice.aop.LogingAspect - введите: au.com.suncorp.insurance.myservice.config.DependentApiRestOperation.getRestOperations () с аргументом [s] = []
2020-01-10 10: 31: 15,999 [ http-nio-8080-exe c -1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = 1 | TRACE_ID = eb88d5c53ab97a40 | SPAN_ID = eb88d5c53ab97a40 | CLIENT_ID = 1 | CLIENT_VERSION = 1 | a. c .simyservice.aop.LoggingAspect - Выход: au.com.suncorp.insurance.myservice.config.DependentApiRestOperation.getRestOperations () с результатом = org.springframework.web.client. RestTemplate@1f3111d1
1026 * 2020-01-10 10: 31: 16,065 [
http-nio-8080-exe c -1 ] ОШИБКА APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = 1 | TRACE_ID = eb88d5c53ab97a40 | SPAN_ID = eb88d5c53ab97a40 | CLIENT_ID = 1 | CLIENT_VERSION = 1 | a. c .simyservice.aop.LoggingAspect
Напротив, когда я создаю CircuitBreaker из CircuitBreakerFactory, в этом случае я вижу, как новые потоки выключателя вращаются, когда элемент управления внутри метода защищен от автоматического выключателя.
Журналы с помощью CircuitBreakerFactory:
2020-01-10 10: 50: 04,178 [ hystrix-HystrixCircuitBreakerFactory-1 ] DEBUG APP = тест -app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simyservice.aop.LoggingAspect - введите: au.com.suncorp.insurance.myservice.config.properties.DependentApiProperties.getAddress () с аргументом [s] = []
2020-01 -10 10: 50: 04,178 [ hystrix-HystrixCircuitBreakerFactory-1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simyservice.aop.LoggingAspect - Выход: au.com.suncorp.insurance.myservice.config.properties.DependentApiProperties.getAddress () с result = au.com.suncorp.insurance.myservice.config.properties. DependentApiProperties$Address@1928e7f3
2020-01-10 10: 50: 04,179 [ hystrix-HystrixCircuitBreakerFactory-1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simyservice.aop.LoggingAspect - введите: au.com.suncorp.insurance.myservice.config.properties.DependentApiProperties.getAddress () с аргументом [s] = []
2020-01 -10 10: 50: 04,179 [ hystrix-HystrixCircuitBreakerFactory-1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simyservice.aop.LoggingAspect - Выход: au.com.suncorp.insurance.myservice.config.properties.DependentApiProperties.getAddress () с result = au.com.suncorp.insurance.myservice.config.properties. DependentApiProperties$Address@1928e7f3
2020-01-10 10: 50: 04,184 [ hystrix-HystrixCircuitBreakerFactory-1 ] INFO APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simpdependent.DependentApi - Запрос: http://example.api.com/api/customers/John
2020-01-10 10: 50: 04,186 [ hystrix-HystrixCircuitBreakerFactory-1 ] DEBUG APP = test-app | ENV = МЕСТНЫЙ | REQUEST_ID = | TRACE_ID = bde6e74d65833730 | SPAN_ID = d5dc68689645201a | CLIENT_ID = | CLIENT_VERSION = | a. c .simyservice.aop.LoggingAspect - введите: au.com.suncorp.insurance.myservice.config.DependentApiRestOperation.getRestOperations () с аргументом [s] = []