首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Resilience4j -日志断路器状态变化

Resilience4j -日志断路器状态变化
EN

Stack Overflow用户
提问于 2021-03-03 13:35:32
回答 2查看 3.9K关注 0票数 1

有关Resilience4J的问题,以及如何记录断路器的状态变化。

目前,Resilience4j工作得很好。有能力在下游系统瘫痪时调用后备,给他们喘息的时间等等.

不幸的是,我的Spring 2.4.4+应用程序面临一个问题

代码语言:javascript
复制
<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水平,请?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-01 04:19:38

您可以使用发出的事件。这可以在CircuitBreaker模块文档的消耗排放的CircuitBreakerEvents部分中找到。

CircuitBreakerEvent可以是状态转换、断路器复位、成功呼叫、记录错误或忽略错误。所有事件都包含其他信息,如事件创建时间和调用的处理持续时间。如果要使用事件,则必须注册事件使用者。

您对onStateTransition方法感兴趣(事件使用者的完整列表是这里):

代码语言:javascript
复制
circuitBreaker.getEventPublisher()
              .onStateTransition(e -> logger.info(e));

您可以直接记录整个事件,因为它正确地重写了toString方法,一个示例日志记录如下所示:

代码语言:javascript
复制
2021-06-01T01:23:45.678901+00:00: CircuitBreaker 'myService' changed state from CLOSED to OPEN
票数 1
EN

Stack Overflow用户

发布于 2021-06-01 04:02:27

您可以使用以下内容来记录转换

代码语言:javascript
复制
circuitBreaker.getEventPublisher().onEvent(event -> {
   LOG.info("State change {}", event);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66458187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档