Size: a a a

Software Design/Architecture/Zen

2021 May 06

ПГ

Павел Г. in Software Design/Architecture/Zen
@antoha_by Спасибо!
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Есть. Эвенты записываем в таблицу events в БД в одной транзакции с сущностью. И только потом отправляем в Rabbit и помечаем их отправленными. И параллельно кроном запускается скрипт, который доотправляет неотправленное. И при этом в консьюмере нужно не пропускать повторные события с тем же id.
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Вопрос про БД, а смысл есть хранить в отдельных табличках, все же саги это больше к инфраструктуре и можно хранить полифорфно?
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Отдельные нагляднее
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
@elisdn Спасибо ! :)
источник

IS

I Scarab in Software Design/Architecture/Zen
Кстати, а если приложение работает с рядом смежных систем - то тоже сагу имеет смысл использовать?

Например интернет-магазин (всех задолбавший пример), обмен данными по REST с какой-нибудь там 1С, процессингом и прочим. Клиент или там менеджер отменяет или редактирует заказ - надо синхронизировать состояние в 1С, отменить или скорректировать данные в процессинге и так далее. При этом изменение может родиться как внутри интернет-магазина, так и прилететь снаружи, например из 1С.
Или для таких вещей что-то другое лучше?
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Ивент отказа бд записываем в бд 😂
А отказ записи ивента?..
Почему бд может отказывать, а иыент-бас (любой) никогда не откажет?
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
Кролик проблемный? 🤔
источник

VS

Vlad Sobenko in Software Design/Architecture/Zen
Да почти в любой системе можно заюзать. Они и так есть почти везде, просто не выделены. Вместо них - if по всему проекту, подпертые палками.
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
А какой ивент-бас у вас отказывает?
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
у нас и документДБ не отказывает 🤷‍♂️
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Тогда к чему был ваш тезис про отказ?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
А почему потеряли? Как сдох?
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
К оригинальному ("теоретическому") вопросу автора
» На каком-то этапе после коммита в БД - ошибка, т.е. с баланса деньги списались, а заказ остался "не оплачен".

У меня тоже "теоретический" вопрос - про отказ ивент-баса
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ну мол, делаем publish confirm, сэтапим 3 ноды с pause minority, юзаем quorum queue и живём себе?
источник

ПГ

Павел Г. in Software Design/Architecture/Zen
Ну вопрос был скорее как настроить при возможных проблемах.
Ну вон Муравей тоже пишет что кролик не совсем надежный, я тоже краем уха слышал.
Из личного, скрипт падал, супервизорд не поднимал кролика, сообщения копились. Потом когда перезапустил всё, не всё завелось. Возможно есть связь с тем, что работа с файлами и другой удаленной системой, и все рассинхронилось. Не уверен что именно "потерялось".
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Retry on failure + можно фолбэк организовать
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Скажем так, настройки по умолчанию у короля в сторону производительности и availability - кроль достаточно надёжный. Просто надо доки читать
источник

SP

Sergey Protko in Software Design/Architecture/Zen
https://jack-vanlightly.com/blog/tag/RabbitMQ

Вот оч рекомендую блог этого товаристча. Мне стольно помогло.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Он сча как раз в команде кроля
источник