Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 卡夫卡-如何将Rest服务消息转换为卡夫卡主题?_Json_Apache Kafka_Confluent Platform_Kafka Rest - Fatal编程技术网

Json 卡夫卡-如何将Rest服务消息转换为卡夫卡主题?

Json 卡夫卡-如何将Rest服务消息转换为卡夫卡主题?,json,apache-kafka,confluent-platform,kafka-rest,Json,Apache Kafka,Confluent Platform,Kafka Rest,我是卡夫卡社区的新成员,我面临着一个具有挑战性的问题。 我有两个应用程序,它们通过RESTWebService相互通信,主体是json消息 如何使用kafka作为这两个应用程序之间的中间件,对应用程序的影响很小或为零 这是我的现状场景: 我的未来情景: 我曾想过使用STM或某种拦截器来转换头和体 有可能这样做吗?我知道我必须将身体从以下方面转化: { "first name" : "Donald" , "last name" : "Trump"

我是卡夫卡社区的新成员,我面临着一个具有挑战性的问题。 我有两个应用程序,它们通过RESTWebService相互通信,主体是json消息

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

这是我的现状场景:

我的未来情景:

我曾想过使用STM或某种拦截器来转换头和体

有可能这样做吗?我知道我必须将身体从以下方面转化:

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

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


有人做过类似的事情,或者有人指示我应该走哪条路?

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

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


因为您没有使用Kafka Connect,所以单消息转换(SMT)在这里不适用

在Kafka生态系统之外,您可以使用NiFi或Streamset进行您正在寻找的这些“消息转换”,两者都可以进行HTTP调用,也可以启动HTTP服务器以直接使用API

你能提供更多的背景资料来说明是什么推动了这一变化吗?为什么要引入卡夫卡?为什么假设您仍然使用REST?有了这一点,帮助就更容易了:)嗨,Robin,我是解决方案架构师,我们正在改变关于集成的参考体系结构,我们建议从对等集成发展到中介集成。这两个应用程序现在是通过webservice集成的,主体符号是json,我们想使用kafka作为我们的中间件,我们不想给这些应用程序带来影响。这是在将消息导入主题之前将其翻译的主要原因。我仍然不清楚的是,既然有许多语言的Kafka客户端库,为什么您仍然希望使用REST来实现这一点?Robin,这两个应用程序都是定制的COTS,目的是为了相互交流,现在我们想在这个场景中介绍卡夫卡,对这些应用程序没有影响明白了吗,我现在明白了:)罗宾,让我看看我是否理解正确,根据你的建议,我应该创建一个卡夫卡流来读取某个主题的信息并将其写入另一个主题,是吗?我无法将消息写入主题,因为应用程序a(producer)调用一个webservice,它有一个标题:“Content-Type:Application/json”,而不是一个标题:“Content-Type:Application/vnd.kafka.json.v2+json”,消息有一个值集合,没有消息开头:
{“records”:[
并且没有设置:
“键”:“K00x”,“值”:{data}
,在每一组数据之前。谢谢@cricket_007,这些应用程序中的任何一个都可以解决我的问题,我甚至可以将它们用作我的连接器,允许连接到数据库和restfull Web服务。没错,这些工具比Kafka&Kafka connect提供的更灵活
{
  "records":
  [
    {
      "key": "K001",
      "value":
      {
        "first name" : "Donald" ,
        "last name" : "Trump"
      }
    },
    {
      "key": "K002",
      "value":
      {
        "first name" : "Vladimir" ,
        "last name" : "Putin"
        }
    }
  ]
}