停止Kafka Streams应用

时间:2016-08-19 23:24:25

标签: java apache-kafka apache-kafka-streams

是否可以使用Kafka Streams应用程序运行主题中的所有数据然后退出?

示例我根据日期生成主题数据。消费者被cron开除,运行所有可用数据,然后......做什么?我不希望它等待更多数据。只是假设它就在那里,然后优雅地退出。

可能?

2 个答案:

答案 0 :(得分:5)

在Kafka Streams中(与其他流处理解决方案一样),它不是“数据结束”,因为它首先是流处理 - 而不是批处理。

尽管如此,您可以观看Kafka Streams应用程序的“滞后”,如果没有滞后(滞后,是尚未消耗的消息数量),请将其关闭。

例如,您可以使用bin/kafka-consumer-groups.sh检查Streams应用程序的延迟(应用程序ID用作使用者组ID)。如果要将其嵌入Streams应用程序中,可以使用kafka.admin.AdminClient获取消费者组信息。

答案 1 :(得分:3)

您可以创建consumer,然后在停止提取数据后,您可以拨打consumer.close()。或者,如果您希望以后再次进行投票,请致电consumer.pause()并稍后致电.resume

执行此操作的一种方法是在消费者投票区块内。如

data = consumer.poll()
if (!data.next()) {
   consumer.close()
}

请注意,poll会返回ConsumerRecord<K,V>并符合Iterable界面。