【发布时间】:2021-01-22 23:39:10
【问题描述】:
寻找设计我的 Kafka Consumer 的最佳方法。基本上我想看看什么是避免数据丢失的最佳方法,以防万一 处理消息期间的异常/错误。
我的用例如下。
a) 我使用 SERVICE 处理消息的原因是 - 将来我计划编写一个 ERROR PROCESSOR 应用程序,该应用程序将在一天结束时运行,它将尝试处理失败的消息(不是所有消息,但由于缺少父项等任何依赖关系而失败的消息)再次。
b) 我想确保消息丢失为零,因此我会将消息保存到文件中,以防在将消息保存到数据库时出现任何问题。
c) 在生产环境中,可能有多个消费者和服务实例正在运行,因此多个应用程序很有可能尝试写入 同一个文件。
Q-1) 写入文件是避免数据丢失的唯一选择吗?
Q-2) 如果是唯一选项,如何确保多个应用程序写入同一个文件并同时读取?请考虑将来一旦错误处理器 正在构建,它可能正在从同一个文件中读取消息,而另一个应用程序正在尝试写入该文件。
错误处理器 - 我们的消息来源遵循事件驱动机制,有时依赖事件(例如,某事物的父实体)很有可能会延迟几天.所以在这种情况下,我希望我的错误处理器多次处理相同的消息。
【问题讨论】:
-
如果您使用 spark 来消费消息,那么您可以查看 spark 检查点。
标签: apache-kafka kafka-consumer-api file-writing