【问题标题】:How to stop the Kafka Listener beans from outside the application?如何从应用程序外部停止 Kafka Listener bean?
【发布时间】:2021-02-10 00:25:28
【问题描述】:

如果服务器上运行着 Kafka 消费者,是否可以选择性地从应用程序外部停止侦听器 bean,例如通过 REST 服务??

【问题讨论】:

    标签: spring kafka-consumer-api spring-kafka


    【解决方案1】:

    假设您使用的是 spring-kafka(您已标记),是的;见the documentation。

    您可以使用KafkaListenerEndpointRegistry 启动和停止所有或单个侦听器。

    【讨论】:

    • 好的。但是是否可以从应用程序外部使用 KafkaListenerEndpointRegistry 停止单个侦听器?我正在尝试构建一个 REST 服务,该服务将具有 2 个端点 - /start 和 /stop - 这将在运行时启动或停止特定的 bean(属于不同的应用程序)。
    • 您需要将其余端点添加到实际的 kafka 应用程序(而不是另一个),只需将注册表自动连接到您的控制器,给每个 lisrtener 一个 id,然后调用registry.getListenerContainer(id).stop()。
    • 或者您可以添加一个主题用于控制目的,并将该主题的侦听器添加到每个应用程序。然后,您的 REST 应用程序可以通过该主题发送命令消息。
    • 谢谢加里。我将其余端点添加到 Kafka 消费者应用程序中,现在我可以根据它们的 ID 启动/停止侦听器容器。
    猜你喜欢
    • 2016-12-27
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多