Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: pattern, outbox, messaging, reliability

Что такое pattern outbox?

Вопрос проверяет понимание шаблона Outbox для обеспечения надежной доставки сообщений в распределенных системах.

Короткий ответ

Pattern Outbox — это подход для надежной отправки сообщений в распределенных системах. Сообщения сначала сохраняются в специальную таблицу "outbox" в той же транзакции, что и бизнес-данные. Затем отдельный процесс читает из outbox и отправляет сообщения в message broker, гарантируя exactly-once доставку.

Длинный ответ

Outbox pattern решает проблему надежной доставки сообщений при работе с базой данных и брокером сообщений.

Проблема:
Как гарантировать, что сообщение будет отправлено в broker только если бизнес-транзакция успешно завершена?

Решение Outbox pattern:

  1. Сохранение в outbox таблицу:

    BEGIN TRANSACTION;
    
    -- Бизнес-операция
    INSERT INTO orders (id, amount) VALUES (1, 100);
    
    -- Сохранение сообщения
    INSERT INTO outbox (id, topic, payload) 
    VALUES (gen_random_uuid(), 'order-created', '{"orderId": 1}');
    
    COMMIT;
  2. Отдельный процесс (poller):

    • Периодически проверяет таблицу outbox

    • Отправляет новые сообщения в брокер

    • Помечает отправленные сообщения как обработанные

Преимущества:

  • Гарантирует exactly-once семантику

  • Избегает распределенные транзакции

  • Обеспечивает надежность доставки

Реализация с Debezium:
Можно использовать Change Data Capture (CDC) инструменты для автоматического чтения из outbox.

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Postgres

    Postgres

  • Redis

    Redis

Ключевые слова

#pattern

#outbox

#messaging

#reliability

Подпишись на Node.js Developer в телеграм

  • Аватар

    Node.js Guru

    Demetra

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.