如何加入多个Kafka主题?

use*_*024 5 apache-kafka apache-kafka-streams ksql

所以我有...

  • 第一个具有通用应用程序日志(log4j)的主题。存储诸如HTTP API请求/响应和警告,异常等之类的东西。一个逻辑业务请求可以有多个日志关联。(这些日志在几秒钟之内发生)
  • 第二个主题包含来自上述业务请求的命令,其他服务将对其执行操作。(这些命令也会在几秒钟之内发生,但可能距原始请求只有几分钟的时间)
  • 第三个主题包含由其他服务的操作生成的事件。(大多数事件会在几秒钟内完成,但有些事件最多可能需要3-5天才能收到)

因此,单个逻辑业务请求可以具有由微服务彼此传递的uuid关联的多个日志,命令和事件。

那么,可以用来阅读这3个主题并将它们全部组合为一个json文档,然后将它们转储给Elasticsearch的技术/模式有哪些?

流媒体?

Rob*_*att 5

您可以使用Kafka Streams或KSQL来实现。哪一个取决于您对Java的偏好/经验,以及您想要执行的联接的细节。

KSQL是Apache Kafka的SQL流引擎,仅通过SQL,您就可以针对Kafka主题声明流处理应用程序。您可以过滤,丰富和聚合主题。当前仅支持流表联接。您可以在此处查看本文的示例

卡夫卡流API是Apache的卡夫卡的一部分,和一个Java库,你可以用做数据流处理中的Apache卡夫卡。它实际上是KSQL的基础,并支持更大的处理灵活性,包括流—流联接

  • 好的。如此简单的解决方案,不需要流式传输。我可以简单地阅读每个主题并对目的地进行更新插入。我不需要做流来简单地加入 JSON。此外,最晚 4 天后才收到消息,这使得清空变得更加困难。 (2认同)