Kafka - 如何将 Rest 服务消息转换为 kafka 主题?
Kafka - how to transform Rest service message to ingest into a kafka topic?
我是 kafka 社区的新手,我正面临一个具有挑战性的问题。
我有两个应用程序通过 Rest 网络服务相互交谈,body 是 json 消息。
如何使用 kafka 作为这两个应用程序之间的中间件,对应用程序的影响很小或为零?
这是我的 As-Is 场景:
我的To-Be场景:
我想过使用 STM 或一些拦截器来转换 header 和 body。
这样可以吗?我知道我必须将 body 从:
{
"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"
}
}
]
}
基本上我的转换会改变消息的开头和结尾,而不是每条记录的字段。
有没有人做过类似的事情,或者有指示我应该走哪条路?
您可能需要 Kafka Streams 应用程序来执行此操作。它将订阅应用程序 A 通过 REST 填充的源主题,根据需要转换消息并将其写入新主题,应用程序 B 可以从中使用它。
Kafka Streams 是 Apache Kafka 的一部分,是一个 Java 库,您可以使用它构建流处理应用程序。还有 KSQL,它是 Kafka Streams 之上的抽象,使用类似 SQL 的语言,但我不确定它是否支持您在这里看到的转换类型。
由于您未使用 Kafka Connect,因此单消息转换 (SMT) 不适用于此处。
在 Kafka 生态系统之外,您可以使用 NiFi 或 Streamsets 来满足您正在寻找的 "message transforms",两者都可以进行 HTTP 调用以及自己启动 HTTP 服务器以供直接 API 消费.
我是 kafka 社区的新手,我正面临一个具有挑战性的问题。 我有两个应用程序通过 Rest 网络服务相互交谈,body 是 json 消息。
如何使用 kafka 作为这两个应用程序之间的中间件,对应用程序的影响很小或为零?
这是我的 As-Is 场景:
我的To-Be场景:
我想过使用 STM 或一些拦截器来转换 header 和 body。
这样可以吗?我知道我必须将 body 从:
{
"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"
}
}
]
}
基本上我的转换会改变消息的开头和结尾,而不是每条记录的字段。
有没有人做过类似的事情,或者有指示我应该走哪条路?
您可能需要 Kafka Streams 应用程序来执行此操作。它将订阅应用程序 A 通过 REST 填充的源主题,根据需要转换消息并将其写入新主题,应用程序 B 可以从中使用它。
Kafka Streams 是 Apache Kafka 的一部分,是一个 Java 库,您可以使用它构建流处理应用程序。还有 KSQL,它是 Kafka Streams 之上的抽象,使用类似 SQL 的语言,但我不确定它是否支持您在这里看到的转换类型。
由于您未使用 Kafka Connect,因此单消息转换 (SMT) 不适用于此处。
在 Kafka 生态系统之外,您可以使用 NiFi 或 Streamsets 来满足您正在寻找的 "message transforms",两者都可以进行 HTTP 调用以及自己启动 HTTP 服务器以供直接 API 消费.