Я занимаюсь разработкой приложения (на основе микросервисов), опираясь на Kafka и Kafka Streams. Я использую Spring Boot и Spring Cloud Stream для этого, и у меня возникают проблемы с обработкой транзакций для операций Kafka Streams. Я знаю, что нет проблем с обработкой транзакций исключительно с потребителем Kafka, однако, когда я пытаюсь добавить обработку Kafka Streams посередине, мне становится сложно.
Пример кейса:
- В одном из моих сервисов запрос на заказ товара из темы А.
- Информация о запасах используется из темы B
- Эта служба производит обновления инвентаризации для темы B, но также отвечает за публикацию событий, касающихся продуктов, готовых к отправке (в тему C)
- При получении запроса на заказ от темы A я хочу проверить (путем обработки темы B), достаточен ли запас для определенного продукта, и опубликовать событие с успехом или неудачей (относительно этого заказа) в теме C.
- В то же время мне нужно обновить запас (вычесть количество, скажем, зарезервированное для отгрузки), чтобы в следующем заказе у меня были фактические значения из темы B. Я хочу опубликовать успех в теме C и обновить инвентарь по теме B в течение одной транзакции.
Возможно ли это в весеннем облачном потоке с потоками кафки? И если да, как мне это сделать?