我是Kafka社区的新人,我面临着一个具有挑战性的问题。我有两个应用程序通过restwebservice相互通信,主体是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"
}
}
]
}
本质上,我的转换将更改消息的开头和结尾,而不是每个记录的字段。
有人做过这样的事,或者有人指示我该走哪条路?
2条答案
按热度按时间wmtdaxz31#
在kafka生态系统之外,您可以将nifi或streamset用于您正在寻找的这些“消息转换”,两者都可以进行http调用,也可以自己启动http服务器以直接使用api。
bybem2ql2#
您可能需要一个kafka streams应用程序来实现这一点。它将从应用程序a订阅通过rest填充的源主题,根据需要转换消息并将其写入新主题,应用程序b可以从中使用它。
kafka streams是apachekafka的一部分,是一个java库,您可以用它构建流处理应用程序。还有ksql,它是kafka流之上的一种抽象,采用类似sql的语言,但我不确定它是否支持您在这里看到的转换类型。
由于您没有使用kafka connect,因此单消息转换(smt)在这里不适用。