如何阻止Kafka Producer流式传输数据?

时间:2015-03-16 20:34:33

标签: apache-kafka hadoop2

从流数据中优雅地停止/暂停Kafka制作人的命令是什么?

2 个答案:

答案 0 :(得分:0)

要停止生产者流式传输数据,只需停止该应用程序即可。 (终止其过程,或者只是不将更多数据发送给Kafka Broker。)

不过,您可以优雅地阻止Kafka Consumer使用流数据。

根据《卡夫卡权威指南》,如果您想退出无限轮询循环,则可以调用Consumer.wake()方法。

  

当您决定退出轮询循环时,将需要另一个线程来调用Consumer.wakeup()。如果您正在主线程中运行使用者循环,则可以通过ShutdownHook来完成。请注意,Consumer.wakeup()是唯一可以从其他线程安全调用的消费者方法。调用wakeup将导致poll()退出,并带有WakeupException异常,或者如果线程不等待轮询时调用了consumer.wakeup(),则在调用poll()的下一次迭代中将引发异常。 WakeupException不需要处理,但是在退出线程之前,必须调用Consumer.close()。

Code Sample

答案 1 :(得分:0)

您可以通过以下方式关闭生产者:

producer.close();

但不要忘记在关闭它之前调用 producer.flush();

相关问题