我正在使用弹性4j.retry和弹性4j .断路器。Service1
正在调用另一个Service2
可能引发异常的服务。即使我遇到异常,我也应该尝试连接至少定义的次数waitDuration * maxRetryAttempts
。
服务 1 ---> 调用 ---> 服务 2
应用程序.yml
resilience4j.retry:
instances:
service1:
maxRetryAttempts: 4
waitDuration: 1000 #ms
retryExceptions:
- org.apache.http.conn.HttpHostConnectException
- org.apache.thrift.TException
- java.net.ConnectException
Service1Repository.java
Service2Response response = CircuitBreaker.decorateSupplier(circuitBreaker,
Retry.decorateSupplier(retry, () -> {
try {
return service2.getdata(params);
} catch (TException e) {
log.error("msg", e);
throw new Service1Exception("msg", e);
}
})
).get();
但是,当Service2
它关闭时,它不会重试(最多 4 次,每次应该在 1000 毫秒后发生)我会null
立即得到响应(在我的情况下)。我尝试增加值(10000ms),还是一样。我看到打印了日志,但服务应该等待waitDuration * maxRetryAttempts
是否Serviece2
关闭。