带有 kafka 消费者的断路器

Joy*_*eep 3 spring circuit-breaker apache-kafka kafka-consumer-api

有没有办法使用基于Spring Kafka的消费者实现断路器模式。我想知道在实现我的 Spring kafka 消费者时,如果基于某些外部系统处理数据失败并引发网络错误,是否可以停止消费记录。但是,如果网络问题得到解决,消费者应该再次正常处理。

KSD*_*KSD 5

如果您想在下游服务或数据库关闭时停止使用消息,您可以参考此解决方案。

例子

  • 消费者正在调用服务 A
  • 服务 A 正在调用外部 HTTP 服务 B
  • 您想在外部服务 B 关闭时设置断路器

在这种情况下,您可以在服务 A 上设置断路器。每当外部服务 B 关闭时,此电路将打开。然后在此断路器的状态转换时,调用您的侦听器/绑定(如果您使用的是 spring-cloud-stream)来停止/暂停使用者。因此,您的消息将保留在队列/主题上,直到断路器再次关闭,而且您不必对消息进行死信处理或将它们放到错误队列/主题上。

您可以参考以下链接以获取详细解决方案,该解决方案使用Resilience4j 进行断路器实现spring-cloud-stream 用于消费者

https://dublincoders.com/circuit-breaker-kafka/


Mic*_*Qin 3

使用死信队列(DLQ)重试是处理消费者故障的良好模式,而断路器模式则适合处理生产者问题。