Apache Samza flush table 立即更新到变更日志

Apache Samza flush table update to changelog immediately

如果我在 Samza 中为 RocksDB Table 指定一个更新日志支持。是否有将异步写入时间更新到更改日志的配置?我想把它缩短到更短的时间。我在 Config reference.

中看不到任何内容

我想要的场景也是在桥接遗留 JMS 连接后从流写入变更日志。这个遗留连接提供部分更新,我想将部分更新合并到更完整的消息中,在 samza 流应用程序中构建这些消息的缓存,并将它们写到更新日志中。

如果我使用配置了 stores.store-name.changelog 的更新日志,那么它将写入更新日志,最终我对 Samze API Table 所做的更改。但速度不够快,无法满足我的需求,因此想配置最长等待时间以传播到更改日志。

或者,似乎每次使用 withSideInputs 到 bootstrap 我的 table 然后使用 sendTo 会更快地更新,我可以保持 LocalStore 也可以读取和写入缓存,并且始终将更新日志作为黄金来源。

我希望更新日志也能快速写入的原因是因为其他应用程序正在读取此更新日志。

是的,您可以使用配置配置将更改提交到更改日志的时间:

task.commit.ms

Docs

然后写入存储将在提交发生时刷新:

profileTable.put(message.key, message.value) 

关于这种更高输入量的注释似乎导致更改在提交毫秒配置之前进入更改日志主题。还要注意不要放得太低,因为随着交易量的增加,整体速度会大幅下降。

您还可以使用低级别 API 提交任务协调器提供的特定流任务 commit api 以手动提交。