14. Transactional Outbox: как гарантировать публикацию события
Заказ сохранился в БД, а событие в Kafka — нет. Знакомо? В этом видео разбираем проблему dual‑write между базой данных и брокером сообщений — когда одно действие выполнено, а другое нет, и система оказывается в несогласованном состоянии. Почему нельзя просто обернуть всё в @Transactional? Как гарантировать, что событие будет опубликовано тогда и только тогда, когда данные сохранены? Ответ — Transactional Outbox. Что в видео: Проблема dual‑write — наглядно показываю, как заказ сохраняется, а событие теряется. Transactional Outbox — что это такое, как работает и почему это стандарт надёжной публикации. Реализация в Spring Boot: Таблица outbox_event (Liquibase) JPA сущность и репозиторий Модификация OrderService – убираю прямую отправку в Kafka Polling Publisher (@Scheduled) – простой способ доставки событий ⏱️ Тайм-коды 00:00 – Вступление: 01:20 – Плюсы и минусы существующего кода, его исправление 09:37 – Демонстрация 11:06 – Проблема dual‑write, демонстрация 11:06 – Transactional Outbox: теория 16:50 – Transactional Outbox: реализация таблицы в БД, сущности, демонстрация 33:36 – Transactional Outbox: реализация через Polling Publisher: @Scheduled, демонстрация 45:30 – Недостатки poll подхода 49:30 – Теория иных подходов Transactional Outbox 54:16 – Реализация Transactional Outbox через CDC: Debezium и WAL 01:12:07 – Чистим код от иных реализаций, демонстрация работы 01:19:08 – Переход к управлению Debezium через Java Code 01:19:08 – Переход к управлению Debezium через Java Code 01:28:26 – Настройка изменения статуса при работе с Debezium 01:36:05 – Настройка кастомной Observability, демонстрация в Grafana Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #Java #TransactionalOutbox #Debezium #spring #OutboxPattern #dual-write, #Kafka #SpringBoot, #PostgreSQL #CDC #микросервисы #event-driven #architecture #sagarika
Заказ сохранился в БД, а событие в Kafka — нет. Знакомо? В этом видео разбираем проблему dual‑write между базой данных и брокером сообщений — когда одно действие выполнено, а другое нет, и система оказывается в несогласованном состоянии. Почему нельзя просто обернуть всё в @Transactional? Как гарантировать, что событие будет опубликовано тогда и только тогда, когда данные сохранены? Ответ — Transactional Outbox. Что в видео: Проблема dual‑write — наглядно показываю, как заказ сохраняется, а событие теряется. Transactional Outbox — что это такое, как работает и почему это стандарт надёжной публикации. Реализация в Spring Boot: Таблица outbox_event (Liquibase) JPA сущность и репозиторий Модификация OrderService – убираю прямую отправку в Kafka Polling Publisher (@Scheduled) – простой способ доставки событий ⏱️ Тайм-коды 00:00 – Вступление: 01:20 – Плюсы и минусы существующего кода, его исправление 09:37 – Демонстрация 11:06 – Проблема dual‑write, демонстрация 11:06 – Transactional Outbox: теория 16:50 – Transactional Outbox: реализация таблицы в БД, сущности, демонстрация 33:36 – Transactional Outbox: реализация через Polling Publisher: @Scheduled, демонстрация 45:30 – Недостатки poll подхода 49:30 – Теория иных подходов Transactional Outbox 54:16 – Реализация Transactional Outbox через CDC: Debezium и WAL 01:12:07 – Чистим код от иных реализаций, демонстрация работы 01:19:08 – Переход к управлению Debezium через Java Code 01:19:08 – Переход к управлению Debezium через Java Code 01:28:26 – Настройка изменения статуса при работе с Debezium 01:36:05 – Настройка кастомной Observability, демонстрация в Grafana Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #Java #TransactionalOutbox #Debezium #spring #OutboxPattern #dual-write, #Kafka #SpringBoot, #PostgreSQL #CDC #микросервисы #event-driven #architecture #sagarika




