微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有断路器的 Kafka 消费者,使用 Resilience4j 的重试模式

如何解决带有断路器的 Kafka 消费者,使用 Resilience4j 的重试模式

我需要一些帮助来了解我如何使用 Spring Boot、Kafka、Resilence4J 提出解决方案,以实现来自我的 Kafka 消费者的微服务调用。假设微服务关闭,那么我需要使用断路器模式通知我的 Kafka 消费者停止获取消息/事件,直到微服务启动并运行。

解决方法

如果您使用的是 Spring Kafka,则可以使用 pause 类的 resumeConcurrentMessageListenerContainer 方法。 您可以将 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 举报,一经查实,本站将立刻删除。