212 похожих чатов

Слушайте, а как можно порешать такую проблему ? есть там сервис

сообщений, есть сервис платежей. Платёж падает и посылает ивент paymentFailed

В сервисе уведомлений создаётся консьюмер, который слушает информацию о платежах, и создаёт сообщение. Проблема в том, что есть другие события, которые тоже требуют создания сообщений, и в итоге сервис начинает знать о куче вещей из других доменов


При этом использование команд, например, переворачивает всё наоборот (платежи знают о сообщениях)

Есть смысл писать какой-то сервис-адаптер, который послушает ивент от пейментов и пошлёт команду в сообщения ?

8 ответов

7 просмотров

ну как раз саги/бизнес-процесс менеджер в простом виде как раз про это есть бизнес прцоесс: разослал в домены команды, слушает события и если что — делает откаты (компенсирующие действия, если где-то упало, то откатить др домены (отменить заказ например, если оплата не прошла как абстрактный пример — это отправить новую команду на отмену) или переходит к след шагу

Arthur-Irgashev Автор вопроса
Максим Федоров
ну как раз саги/бизнес-процесс менеджер в простом ...

А без саг ? Они у нас считаются оверинжинирингом )

без саг: простая сущность бизнес-процесса, он работает с несколькими доменами — не в доменах же логику завязывать на др домены итого: - есть десяток контекстов - есть еще один контекст, в котором описана работа с нескольькими, довольно удобно в одном месте сборная солянка как работать с несколькими (отправил команду оплатить, отпарвил команду забронить товар, отправил сообщение на почту)

Arthur-Irgashev Автор вопроса

https://youtu.be/Fuac__g928E

Давай думать. Есть как ты сказал 2 решения влоб - либо все сервисы знают о нотификашках либо нотификашки слушают кучу ивентов и по ним пытаются понять чё делать. Дальше думаем что ещё страшного мы можем придумать. Скажем в нотификашках должен быть какой-то контент. Откуда он возьмётся? Сервису нотификаций надо будет ещё больше знать о других сервисах? Вообще в чем задача "сервиса нотификаций" - у этого сервиса есть некие топики, есть ресипиента, их настройки нотификаций, кому на email кому пуш на мобилку кому sms. Допустим на каждую большую фичу нас просят интегрировать нотификашки. Если брать решение влоб то это много зависимостей между командами. Можно сделать абстрактный контракт который позволяет зарегистрировать новый топик. В этом случае все сервисы знают про нотификашки но контракт у нас стабильный, есть дока и мы не блочим работу команды. Скажем есть админка где все можно настроить и не дергать разработчиков. В этом ключе связанность не такая большая и не является проблемой.

Arthur-Irgashev Автор вопроса
Sergey P
Давай думать. Есть как ты сказал 2 решения влоб ...

ну это не совсем нотификации, скорее внутрненние тикеты. т.е. сервис знает там об агентах и как создавать тикеты на них, а остальные сервисы сейчас дергают по хттп его апи для создания этих самых тикетов причем по апишке уходит вот как раз вся информация, которую по идее другим продуктовым сервисам вообще знать не нужно: на кого создавать, на какие группы агентов, для каких регионов, какой темплейт в сообщении использовать. итого там около полутора десятка различных параметров. кажется, что это хуже, чем если бы сервис тикетов подписывался на нужные ивенты (пусть их было бы даже и много), т.к. в противном случае при изменении контракта тикетинга придется пойти и перефигачить десятки - сотни мест в других сервисах, где эта апишка вызывается (синхронно или асинхронно) а так все изменения будут локализованы + при изменении контракта внешнего сервиса нужно будет сходить всего в 1 место и поправить там (хотя это тоже лишние коммуникации между командами, что не есть гуд)

Arthur Irgashev
ну это не совсем нотификации, скорее внутрненние т...

это вопрос стабильности контрактов. Условно, какие данные нужны, у кого они есть... может быть решение будет не идеальным с точки зрения связанности но если скажем добавлять новые такие ивенты нужно раз в пару месяцев и это не сказывается на деливери особо - ну почему нет. тут как бы нет правильно неправильно. Вопрос стоимости.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
Кто создает тут ботов для телеграмм групп ?
Antskup
8
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
How to create an OS in C? what to study?
Linus
18
Карта сайта