卡夫卡-如何将要提取的Rest服务消息转换为一个卡夫卡主题?

时间:2019-01-25 14:09:26

标签: json apache-kafka confluent kafka-rest

我是kafka社区的新手,我面临一个具有挑战性的问题。 我有两个通过Rest webservice互相交谈的应用程序,主体为json消息。

我如何使用kafka作为这两个应用程序之间的中间件,而对应用程序的影响很小或为零?

这是我的现状:

https://i.imgur.com/i4yoFHd.png

我的未来场景:

https://i.imgur.com/z05ceQj.png

我曾经考虑过使用STM或某些拦截器来转换标头和正文。

可以这样做吗?我知道我必须从以下位置改变身体:

      {
        "first name" : "Donald" ,
        "last name" : "Trump"
      },
      {
        "first name" : "Vladimir" ,
        "last name" : "Putin"
      }

收件人:

{
  "records":
  [
    {
      "key": "K001",
      "value":
      {
        "first name" : "Donald" ,
        "last name" : "Trump"
      }
    },
    {
      "key": "K002",
      "value":
      {
        "first name" : "Vladimir" ,
        "last name" : "Putin"
        }
    }
  ]
}

基本上,我的转换将更改消息的开头和结尾,而不是每个记录的字段。

任何人都做了类似的事情,或者表明我应该走哪条路?

2 个答案:

答案 0 :(得分:0)

您可能希望Kafka Streams应用程序执行此操作。它将订阅通过REST从应用程序A填充的源主题,根据需要转换消息并将其写入新的主题,应用程序B可以从中使用它。

Kafka Streams是Apache Kafka的一部分,是一个Java库,您可以使用它来构建流处理应用程序。还有一个KSQL,它是一种类似SQL的语言,是Kafka Streams之上的抽象,但是我不确定它是否支持您在这里看到的转换类型。

由于您未使用Kafka Connect,因此单消息转换(SMT)在这里不适用。

答案 1 :(得分:0)

在Kafka生态系统之外,您可以将NiFi或Streamsets用于所需的这些“消息转换”,并且都可以进行HTTP调用以及自行启动HTTP服务器以直接使用API​​。