自动部署Kafka Stream应用程序

4
我刚开始学习Kafka和Kafka流应用程序。我编写了一个Kafka流应用程序,它从一个主题中消费信息,处理这些信息,并将其发送到另一个主题。
据我所知,我找到的运行此Kafka流应用程序的唯一方法是:
  • 从IDE运行Java类。
  • 生成*.jar文件并从提示符运行它。
我想知道是否有任何方法可以在Kafka服务器启动时自动运行Kafka流应用程序。例如:将*.jar文件复制到Kafka安装的某个文件夹中,并在启动Kafka服务器时自动运行此流应用程序。

3
注意:不建议在与您的代理商相同的硬件上运行Kafka Streams应用程序! - Matthias J. Sax
1个回答

6
您的Kafka broker (服务器) 和 Kafka Streams 应用程序是相互独立的。您可以以任何您管理服务器进程的方式来启动它们,无论是像 initd 或 systemd 这样的解决方案,还是基于容器的解决方案,如 Docker 或 Kubernetes。
根据我的经验,如果您的 streams 应用程序在 broker 或 ZooKeeper 启动之前启动,那么它可能会超时等待它们上线。因此,您可能需要在这种情况下配置流处理过程以重新启动。

我知道我的Kafka Stream应用程序可以在基于容器的解决方案中一直运行,但关键是我想知道是否有任何方法可以在启动时自动与Kafka broker一起运行。这可能吗? - David Corral
2
我不理解"可能吗?"的意思。是的,可能:当您启动代理时,在下一个命令中启动streams应用程序。您的问题中缺少什么?如果您运行它,就运行它。如果不运行,则不运行。您说的"自动"是什么意思?这完全取决于您的部署机制。代理和Kafka Streams应用程序本质上没有任何联系,因此您可以在部署设备支持部署的程度上自动运行它们。 - Dmitry Minkovsky
我想把这个Kafka Stream应用程序转换成“本地”应用程序,使用Kafka安装,而无需从提示符或命令行运行Kafka Stream应用程序。我需要的解决方案可能是创建一个脚本来运行所需的基础设施(Zookeeper、Kafka等),然后自动部署所有内容以运行Kafka Stream应用程序。 - David Corral
我想我明白了。是的,没有“本地”的方法来运行它并将其作为kafka代理的一部分运行。你提出的脚本很有道理。但是你需要先启动zookeeper和kafka...然后再启动你的Streams应用程序。 - Dmitry Minkovsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接