我是kafka社区的新手,我面临一个具有挑战性的问题。 我有两个通过Rest webservice互相交谈的应用程序,主体为json消息。
我如何使用kafka作为这两个应用程序之间的中间件,而对应用程序的影响很小或为零?
这是我的现状:
我的未来场景:
我曾经考虑过使用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"
}
}
]
}
基本上,我的转换将更改消息的开头和结尾,而不是每个记录的字段。
任何人都做了类似的事情,或者表明我应该走哪条路?
答案 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。