如何解决带有断路器的 Kafka 消费者,使用 Resilience4j 的重试模式
我需要一些帮助来了解我如何使用 Spring Boot、Kafka、Resilence4J 提出解决方案,以实现来自我的 Kafka 消费者的微服务调用。假设微服务关闭,那么我需要使用断路器模式通知我的 Kafka 消费者停止获取消息/事件,直到微服务启动并运行。
解决方法
如果您使用的是 Spring Kafka,则可以使用 pause
类的 resume
和 ConcurrentMessageListenerContainer
方法。
您可以将 EventListener 附加到 CircuitBreaker,它侦听状态转换并暂停或恢复事件处理。将 CircuitBreakerRegistry 注入您的 bean:
circuitBreakerRegistry.circuitBreaker("yourCBName").getEventPublisher().onStateTransition(
event -> {
switch (event.getStateTransition()) {
case CLOSED_TO_OPEN:
container.pause();
case OPEN_TO_HALF_OPEN:
container.resume();
case HALF_OPEN_TO_CLOSED:
container.resume();
case HALF_OPEN_TO_OPEN:
container.pause();
case CLOSED_TO_FORCED_OPEN:
container.pause();
case FORCED_OPEN_TO_CLOSED:
container.resume();
case FORCED_OPEN_TO_HALF_OPEN:
container.resume();
default:
}
}
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。