【问题标题】:How to check if Kafka is empty using Spring Kafka?如何使用 Spring Kafka 检查 Kafka 是否为空?
【发布时间】:2019-08-21 04:32:42
【问题描述】:

当我重新启动我的应用程序时,我需要处理 Kafka 中的剩余消息,直到它为空,然后我的应用程序应该继续正常工作。我的问题是如何检查 Kafka 主题是否为空。我正在使用 Spring Kafka。

【问题讨论】:

  • 你的问题太宽泛了。 Kafka 是指特定的 Kafka 主题吗?另外,empty 是什么意思?是否要检查是否没有提交新的偏移量或主题是否完全为空?
  • 是的,它是一个特定的 Kafka 主题

标签: apache-kafka spring-kafka


【解决方案1】:

设置idleEventInterval 容器属性,您可以侦听ListenerContainerIdleEvents,每次在该时间间隔内未收到任何记录时都会发布该属性 - 请参阅the documentation

虽然效率很高,但异步消费者的一个问题是检测它们何时空闲。如果一段时间内没有消息到达,您可能需要采取一些措施。

您可以将侦听器容器配置为在一段时间后没有消息传递时发布 ListenerContainerIdleEvent。当容器空闲时,每 idleEventInterval 毫秒发布一个事件。

【讨论】:

    【解决方案2】:

    您可以简单地使用唯一标识符或特殊类型(例如type: RESTART)向主题发送特殊的“重启”消息,并配置您的 Kafka 侦听器以在“重启”时通知您的应用程序(例如通过单独的 Kafka 主题) " 收到消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2017-04-22
      • 1970-01-01
      相关资源
      最近更新 更多