您如何判断 Kafka Streams 应用何时处于 "running" 状态?
How can you tell when a Kafka Streams app is in the "running" state?
给定一个最近启动的 Kafka Streams 应用程序,如何才能可靠地确定它已达到 "RUNNING" 状态?这是在启动一个或多个流应用程序的测试程序的上下文中,需要等到它们 运行 才能提交测试消息。
我知道 .setStateListener
方法,但我想知道是否有一种方法可以从 外部 应用进程检测此状态。我认为它可能作为 jmx 指标公开,但我在 VisualVM 中找不到
状态侦听器方法是可行的方法。没有其他 out-of-the-box 方法可以实现您想要的。
也就是说,您可以执行以下操作:
- 在您的 Kafka Streams 应用程序中公开一个简单的 "health check"(或 "running yes/no check"),例如通过 REST 端点(使用您熟悉的任何 REST 工具)。
- 健康检查可以基于您已经知道的 Kafka Streams 的 built-in 状态侦听器。
- 然后,您的测试程序可以远程查询各种 Kafka Streams 应用程序的健康检查端点,以确定它们何时启动以及 运行。
当然,您可以使用其他方式来传达 Kafka Streams 应用程序的准备情况。 (1) 中的 REST 端点思想只是一个示例。
- 您还可以让 Kafka Streams 应用程序将其就绪状态写入 Kafka 主题,您的测试程序将订阅该主题以确定所有应用程序何时就绪。
- 另一种选择是在您的 Kafka Streams 应用程序中提供自定义 JMX 指标,您的测试程序随后可以访问该指标。
给定一个最近启动的 Kafka Streams 应用程序,如何才能可靠地确定它已达到 "RUNNING" 状态?这是在启动一个或多个流应用程序的测试程序的上下文中,需要等到它们 运行 才能提交测试消息。
我知道 .setStateListener
方法,但我想知道是否有一种方法可以从 外部 应用进程检测此状态。我认为它可能作为 jmx 指标公开,但我在 VisualVM 中找不到
状态侦听器方法是可行的方法。没有其他 out-of-the-box 方法可以实现您想要的。
也就是说,您可以执行以下操作:
- 在您的 Kafka Streams 应用程序中公开一个简单的 "health check"(或 "running yes/no check"),例如通过 REST 端点(使用您熟悉的任何 REST 工具)。
- 健康检查可以基于您已经知道的 Kafka Streams 的 built-in 状态侦听器。
- 然后,您的测试程序可以远程查询各种 Kafka Streams 应用程序的健康检查端点,以确定它们何时启动以及 运行。
当然,您可以使用其他方式来传达 Kafka Streams 应用程序的准备情况。 (1) 中的 REST 端点思想只是一个示例。
- 您还可以让 Kafka Streams 应用程序将其就绪状态写入 Kafka 主题,您的测试程序将订阅该主题以确定所有应用程序何时就绪。
- 另一种选择是在您的 Kafka Streams 应用程序中提供自定义 JMX 指标,您的测试程序随后可以访问该指标。