我正在尝试使用Kafka
和Kafka Streams
创建一个帐户管理服务。
SignupRequest
消息放在一个signup-requests
主题上,使用该主题的流中的第一个处理器必须首先检查电子邮件的唯一性,这就是问题的开始,我在想两种可能性,但是我只是新手...
第一个是在KTable
主题上创建一个accounts
,因此我可以使用它检查电子邮件的唯一性。但是我读到主题中的消息有一段时间可以删除,之后将其删除。因此,如果很早以前创建的带有已检查电子邮件的帐户比配置的离开时间早,那么该帐户不应显示为KTable
,这样我的验证就会受到影响。
第二种选择是查询实际上确实直接保留了帐户的数据库,但是如何在kafka
处理器中执行异步操作?这是一个好习惯吗?
答案 0 :(得分:3)
我了解到某个主题中的消息有一定的离开时间,之后将其删除。
您可以根据时间(或主题的大小)来定义保留时间,但是也可以将主题配置为“ 压缩”。这是一个特殊的保留选项,这意味着对于每个 key ,始终会保留最新消息,无论何时接收到最新消息。因此,压缩主题非常适合KTables后面的主题。