从流数据中优雅地停止/暂停Kafka制作人的命令是什么?
答案 0 :(得分:0)
要停止生产者流式传输数据,只需停止该应用程序即可。 (终止其过程,或者只是不将更多数据发送给Kafka Broker。)
不过,您可以优雅地阻止Kafka Consumer使用流数据。
根据《卡夫卡权威指南》,如果您想退出无限轮询循环,则可以调用Consumer.wake()方法。
当您决定退出轮询循环时,将需要另一个线程来调用Consumer.wakeup()。如果您正在主线程中运行使用者循环,则可以通过ShutdownHook来完成。请注意,Consumer.wakeup()是唯一可以从其他线程安全调用的消费者方法。调用wakeup将导致poll()退出,并带有WakeupException异常,或者如果线程不等待轮询时调用了consumer.wakeup(),则在调用poll()的下一次迭代中将引发异常。 WakeupException不需要处理,但是在退出线程之前,必须调用Consumer.close()。
答案 1 :(得分:0)
您可以通过以下方式关闭生产者:
producer.close();
但不要忘记在关闭它之前调用 producer.flush();。