如何处理kafka KStream并直接写入数据库而不是发送另一个主题

Meg*_*gha 2 apache-kafka apache-kafka-streams apache-kafka-connect

我不想将已处理的KStream写入另一个主题,我直接想要将丰富的KStream写入数据库.我该怎么办?

Mat*_*Sax 6

您可以实现Processor打开数据库连接并通过其应用它的自定义KStream#process().参看 https://docs.confluent.io/current/streams/developer-guide.html#applying-processors-and-transformers-processor-api-integration

注意,您需要对数据库执行同步写操作以防止数据丢失.

因此,不回写主题有多个缺点:

  • 由于同步写入导致吞吐量降低
  • 你不能使用完全一次的语义
  • 将您的应用程序与数据库耦合(如果数据库关闭,您的应用程序也会关闭,因为它无法再写入其结果)

因此,建议将结果写回主题并使用Connect API将数据导入数据库.