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

时间:2017-10-02 11:52:06

标签: apache-kafka apache-kafka-streams apache-kafka-connect

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

1 个答案:

答案 0 :(得分:5)

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

请注意,您需要对数据库进行同步写入以防止数据丢失。

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

  • 因同步写入而导致吞吐量降低
  • 你不能使用完全一次的语义
  • 将您的应用程序与数据库耦合(如果数据库出现故障,您的应用程序也会停止运行,因为它不能再写出结果了)

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