从kafka重新创建缓存

gkl3eglg  于 2021-06-08  发布在  Kafka
关注(0)|答案(0)|浏览(225)

我已经决定使用kafka来实现一个事件源,还有一些事情我还不太确定。一种是找到一种很好的方法来重新创建我的物化视图(存储在postgres数据库中),以防失败。
我正在构建一个消息传递应用程序,因此请考虑一个服务接收rest请求以创建新消息的示例。它将验证请求,然后在kafka中创建一个事件(例如“newmessagecreated”)。然后服务(可能还有其他服务)将获取该事件以更新其本地数据库。但是,让我们假设数据库已经崩溃,因此在数据库中保存订单失败。如果我正确地理解了如何处理这种情况,我应该清空数据库,并尝试通过重放所有Kafka事件来重新创建它。
如果我的假设是正确的,我可以看到以下问题:
1) 我需要为我的“消息”主题强制按userid排序(因此来自特定用户的所有消息都按顺序使用),所以这意味着我不能对该主题使用kafka的日志压缩功能。这意味着无论我的应用程序有多大,我都必须重放来自Kafka的所有事件!有没有更好的方法来解决这个问题?
2) 每次我重放来自kafka的任何事件时,它们可能会触发新事件的创建(例如,消费者可能会进行一些处理,然后在提交之前生成一个新事件)。这听起来真的有问题,所以我在想,如果我不只是在重建缓存时重放事件,我应该处理事件,但禁用新事件的生成(即使这需要额外的代码,看起来很麻烦)。
3) 当在使用某些消息时发生错误(例如,由于某些资源故障或错误),我应该提交消息并在kafka主题中生成错误,还是根本不提交?在后一种情况下,这意味着同一分区中的后续消息也不能提交(否则它们也将隐式提交前一个消息)。
有什么办法解决这些问题吗?谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题