Кафка - как превратить сообщение сервиса Rest для включения в тему кафки? - PullRequest
0 голосов
/ 25 января 2019

Я новичок в сообществе кафки и сталкиваюсь со сложным вопросом.У меня есть два приложения, которые общаются друг с другом через веб-сервис Rest, а тело - это сообщение json.

Как я могу использовать kafka в качестве промежуточного программного обеспечения между этими двумя приложениями, с минимальным или нулевым воздействием на приложения?

Это мой сценарий "как есть":

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

Мой сценарий "To-Be":

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 голосов
/ 26 января 2019

За пределами экосистемы Kafka вы можете использовать NiFi или Streamsets для этих «преобразований сообщений», которые вы ищете, и оба могут выполнять HTTP-вызовы, а также запускать сами HTTP-серверы для непосредственного использования API.

0 голосов
/ 25 января 2019

Вы, вероятно, хотите, чтобы приложение Kafka Streams делало это.Он подпишется на исходную тему, заполняемую через REST из приложения A, преобразует сообщение по мере необходимости и записывает его в новую тему, из которой приложение B может ее использовать.

Kafka Streams является частью Apache Kafka и представляет собой библиотеку Java, с помощью которой можно создавать приложения для потоковой обработки.Существует также KSQL, который является абстракцией поверх потоков Kafka в языке, подобном SQL, но я не уверен, что он будет поддерживать тип преобразования, который вы здесь смотрите.

Поскольку вы не используете Kafka Connect, преобразование одного сообщения (SMT) здесь не применимо.

...