有关Resilience4J的问题,以及如何记录断路器的状态变化。
目前,Resilience4j工作得很好。有能力在下游系统瘫痪时调用后备,给他们喘息的时间等等.
不幸的是,我的Spring 2.4.4+应用程序面临一个问题
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-reactor</artifactId>
</dependency>
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-boot2</artifactId>
</dependency>假设我们的断路器在T时存在关闭模式,例如由于下游系统不可用。
在随后的调用中,由于电路被打开,进入回退,当调用回退方法时,我有一个日志。
因此,我只知道在T+1时断路器已经打开。但不是断路器改变状态的确切时刻。
我想知道,如何记录断路器的事件改变状态,目前它真的改变状态在info水平,请?
发布于 2021-06-01 04:19:38
您可以使用发出的事件。这可以在CircuitBreaker模块文档的消耗排放的CircuitBreakerEvents部分中找到。
CircuitBreakerEvent可以是状态转换、断路器复位、成功呼叫、记录错误或忽略错误。所有事件都包含其他信息,如事件创建时间和调用的处理持续时间。如果要使用事件,则必须注册事件使用者。
您对onStateTransition方法感兴趣(事件使用者的完整列表是这里):
circuitBreaker.getEventPublisher()
.onStateTransition(e -> logger.info(e));您可以直接记录整个事件,因为它正确地重写了toString方法,一个示例日志记录如下所示:
2021-06-01T01:23:45.678901+00:00: CircuitBreaker 'myService' changed state from CLOSED to OPEN发布于 2021-06-01 04:02:27
您可以使用以下内容来记录转换
circuitBreaker.getEventPublisher().onEvent(event -> {
LOG.info("State change {}", event);
});https://stackoverflow.com/questions/66458187
复制相似问题