Kafka Connect中的多消息转换

时间:2020-05-22 10:57:04

标签: apache-kafka apache-kafka-connect

我有Kafka-Connect,我需要将其与REST API集成在一起,当使用单输入多数据模型调用该API时,效果最好。

想象一下:

源主题-> REST请求-> REST响应-> 接收主题

Kafka源主题

{"Foo":"Bar345354"}
{"Foo":"Bar454354"}

REST请求

{
  "doWorkOn": {
    "message1Foo": "Bar345354",
    "message2Foo": "Bar454354",
    ...
  }
}

REST响应

{
  "result": {
    "message1Foo": "Bar948474",
    "message2Foo": "Bar434343",
    ...
  }
}

卡夫卡水槽主题

{"Foo":"Bar948474"}
{"Foo":"Bar434343"}

所以我想在给定的时间范围内转换多个消息。

有关Kafka-Connect转换(https://docs.confluent.io/current/connect/transforms/index.html)的文档指出,该文件处理的是 SMT 单输入单数据模型。因此,我正在使用Kafka-Connect搜索 MMT 对应对象。

到目前为止,我找不到它。谁能指出有哪些选择?

1 个答案:

答案 0 :(得分:1)

听起来Kafka Connect在这里并不适合。 Kafka Connect连接器适用于

  • 源连接器-将数据从系统导入Kafka
  • 接收器连接器-从Kafka推到另一个系统。

这些都不符合您在问题中描述的模式。我认为解决方案在于编写流处理应用程序。从一个主题获取数据,执行某些操作(外部REST调用),然后将其写回到另一个Kafka主题。

为此,Kafka Connect的对应对象为Kafka Streams


Edit :再考虑一下这一点,在Confluent Replicator和MirrorMaker 2中,它们都作为Kafka Connect连接器,从一个主题读取并写入另一个主题,因此存在这种模式的优先级。