问题描述
我不想把经过处理的KStream写到另一个主题,我想直接把丰富的KStream写到数据库中.我应该如何进行?
I don't want to write processed KStream to another topic, I directly want to write enriched KStream to database. How should I proceed?
推荐答案
您可以实现一个自定义 Processor
来打开一个数据库连接并通过 KStream#process()
.参见https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#applying-processors-and-transformers-processor-api-integration
You can implement a custom Processor
that opens a DB connection and apply it via KStream#process()
. Cf. https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#applying-processors-and-transformers-processor-api-integration
请注意,您需要同步写入数据库以防止数据丢失.
因此,不回写一个主题有很多缺点:
Thus, not writing back to a topic has multiple disadvantages:
- 由于同步写入而降低了吞吐量
- 你不能使用恰好一次语义
- 将您的应用程序与数据库耦合(如果数据库出现故障,您的应用程序也会出现故障,因为它无法再写入结果)
因此,建议将结果写回主题并使用 Connect API 将数据导入数据库.
这篇关于如何处理kafka KStream并直接写入数据库而不是向其发送另一个主题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!