Ровная семантика весной Кафки - PullRequest
3 голосов
/ 04 апреля 2019

Мне нужно применить транзакции в системе, которая состоит из следующих компонентов:

  1. Производитель Kafka, это какое-то внешнее приложение, которое будет публиковать сообщения на тему kafka.
  2. Потребитель Kafka, это приложение с весенней загрузкой, в котором я настроил прослушиватель kafka, и после обработки сообщения его необходимо сохранить в базе данных NoSQL.

Я просмотрел несколько блогов, таких как , это & , это , и все они рассказывают о транзакциях в контексте потокового приложения, где сообщения будут читаться, обрабатываться и записываться. вернуться к теме Кафки.

Я не вижу четкого примера или блога о достижении транзакционности в сценарии использования, аналогичном моему, т. Е. создание-обработка-запись в БД в одной атомарной транзакции . Я считаю, что это очень распространенный сценарий, и его тоже нужно поддерживать.

Может кто-нибудь подсказать мне, как этого добиться? Будем весьма благодарны за любые соответствующие фрагменты кода.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Я предполагаю, что вы пытаетесь решить сценарий, в котором ваш потребитель отключается после записи в базу данных, но до фиксации смещений или других подобных проблем.К сожалению, это означает, что вам нужно создать свою собственную отказоустойчивость.

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

1 голос
/ 04 апреля 2019

в одной атомарной транзакции.

Нет способа сделать это; Kafka не поддерживает транзакции XA (как и большинство БД NoSQL). Вы можете использовать синхронизацию транзакций Spring для 1PC с максимальным усилием.

См. документацию .

Spring для Apache Kafka реализует обычную синхронизацию транзакций Spring.

Он обеспечивает «лучшие усилия 1PC» - см. Распределенные транзакции в Spring с XA и без него для более полного понимания и ограничений.

...