П
Папочка Разработки
@dotnetdad2.6K подп.
2.4Kпросмотров
92.3%от подписчиков
5 февраля 2026 г.
questionScore: 2.6K
Почему нельзя просто отправить сообщение в Kafka? Не, конечно, можно. Если тебе плевать на консистентность. Смотри: у тебя транзакция, ты делаешь Save() и потом Publish(). А между ними — пропасть, в которую может упасть что угодно: сеть, брокер, твой сервис. 🥣 Transactional Outbox — это когда вместо Publish() ты делаешь ещё один Insert() в таблицу outbox. В той же транзакции. Атомарно. using var transaction = await _db.BeginTransactionAsync(); _db.Orders.Add(order); _db.Outbox.Add(new OutboxMessage(order)); // Вместо _kafka.Publish() await _db.SaveChangesAsync(); await transaction.CommitAsync(); А потом фоновый процесс читает эту таблицу и рассылает. Это как записка на холодильник: ты не покупаешь бананы прямо сейчас, а пишешь "купить бананы" и точно не забудешь. Если честно, я использовал этот подход несколько лет и только потом узнал, что это какой-то популярный паттерн.
2.4K
просмотров
892
символов
Да
эмодзи
Нет
медиа

Другие посты @dotnetdad

Все посты канала →
Почему нельзя просто отправить сообщение в Kafka? Не, конечн — @dotnetdad | PostSniper