事件已在Kafka处理确认

时间:2017-12-21 12:43:51

标签: java asynchronous stream apache-kafka

我正在尝试在Kafka中实现某种事件处理。我有一些生产者将事件发布到Kafka队列。我也是消费者获取事件,处理它并在DB中保存处理过的数据。但是,我需要确保每个事件都已处理完毕。如果在从队列中取出事件后处理事件期间出现意外崩溃会怎么样?我如何通知Kafka这个特定事件仍未处理?有没有已知的模式?

1 个答案:

答案 0 :(得分:1)

Kafka流版本0.10。*按设计已经"至少一次"语义。一旦你使用数据库,如果每个事件都有自己的密钥,你也会得到"完全一次语义"因为如果你写同一把钥匙就没有重复。

如果您想确保这是正确的。 启动kafka, 生成数据, 启动DB, 开始你的流, 确保数据到达那里, 现在停止你的数据库, 当它遇到一些错误时杀掉流, 再次启动DB, 您将看到Kafka再次将数据再现到您的数据库中。

如需进一步阅读,请访问here