Вариант использования Kafka: непрерывно читать из kafka, выполнить расшифровку сообщения, затем вставить в базу данных - PullRequest
0 голосов
/ 27 марта 2019

Вариант использования Kafka: непрерывное чтение из Kafka (возможно, из потока), выполнение расшифровки значения сообщения с помощью метода Java, затем вставка в db (либо в соединитель приемника, либо у меня есть API REST Java, который можно вставить в db, если это необходимо)

Я не видел ни одного жизнеспособного решения для этого варианта использования, ПОТОМУ ЧТО:

  1. Я не могу хранить расшифрованные данные в kafka.

  2. Мне нужно выполнить дешифрование перед вставкой в ​​БД.

Глядя на Kafka Connect и Kafka Streams, чтобы найти вариант использования:

Не похоже, что я могу использовать Kafka Connect, потому что я не понимаю, как я могу включить этап расшифровки.

Не похоже, что я могу использовать Kafka Streams, потому что 1. Он создан для чтения и обратной записи по темам. 2. Даже если бы я использовал Processor API для реализации пользовательской логики, я не понимаю, как я могу преобразовать значение сообщения KStream в String, которое я могу передать в мой метод расшифровки Java или базу данных.

У меня есть работающее решение, использующее обычное приложение Kafka Consumer в приложении Java, но оно выполняет его как одноразовое пакетное задание, мне нужно приложение, которое долго работает и постоянно проверяет очередь Kafka. Я мог бы бесконечно перебирать пакетное задание, но я не уверен, что это приемлемый вариант.

Как я могу выполнить этот вариант использования? Искра нам не подходит.

1 Ответ

0 голосов
/ 15 апреля 2019

Вы должны использовать Kafka Connect и написать собственный SMT, реализовав Transformation интерфейс:

https://github.com/apache/kafka/blob/trunk/connect/api/src/main/java/org/apache/kafka/connect/transforms/Transformation.java

Ознакомьтесь с этим докладом для получения более подробной информации: https://www.confluent.io/thank-you/single-message-transformations-not-transformations-youre-looking/

...