如何加入多个Kafka主题?

时间:2018-03-11 22:21:22

标签: apache-kafka apache-kafka-streams ksql

所以我有......

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

因此,单个逻辑业务请求可以通过微服务相互传递的uuid与其关联的多个日志,命令和事件。

那么有哪些技术/模式可用于读取3个主题并将它们作为单个json文档连接在一起然后将它们转储给Elasticsearch?

流?

3 个答案:

答案 0 :(得分:3)

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

KSQL是Apache Kafka的SQL流引擎,仅使用SQL就可以针对Kafka主题声明流处理应用程序。您可以过滤,丰富和聚合主题。目前仅支持流表连接。您可以在this article here

中查看示例

Kafka Streams API是Apache Kafka的一部分,是一个Java库,可用于在Apache Kafka中对数据进行流处理。它实际上是KSQL的基础,并支持更高的处理灵活性,包括stream-stream joins

答案 1 :(得分:2)

您可以使用KSQL加入流。

  1. KSQL Table / Stream中有2个构造。
  2. 目前,Stream& amp;一张桌子。所以你需要确定哪个适合什么?
  3. 您不需要加入窗口。
  4. 使用KSQL的好处。

    1. KSQL易于设置。
    2. KSQL是SQL语言,可帮助您快速查询数据。
    3. 缺点。

      1. 它还没有准备就绪,但是在2018年4月,这个版本即将发布。
      2. 现在它的小马车,但肯定会在几个月后改善。
      3. 请看一下。

        https://github.com/confluentinc/ksql

答案 2 :(得分:-1)