本文介绍了如何处理kafka KStream并直接写入数据库而不是向其发送另一个主题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不想把经过处理的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并直接写入数据库而不是向其发送另一个主题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-30 21:34