последовательность событий
От: busk  
Дата: 02.04.18 13:36
Оценка:
Есть система платежей.
Система отправляет платеж во внешнюю систему и периодически трекает статус.
Есть класс Transfer(перевод) с событиями SenderReject, SenderAccepted, SenderSent, ReceiverRecieved, ReceiverReject, ReceiverAccepted etc

Суть в том, что есть сервис который периодически получает по каждому переводу события и может получиться с момента последней проверки Перевод успел пройти 3 события.
То есть по сути получается Перевод идет по графу событий.

И надо в зависимости от вершины чтото сделать в системе.
Как это делать чтобы не получилось много макарон?
Re: последовательность событий
От: Дельгядо Филипп Россия  
Дата: 02.04.18 13:47
Оценка:
Здравствуйте, busk, Вы писали:

B>Есть система платежей.

B>Система отправляет платеж во внешнюю систему и периодически трекает статус.
B>Есть класс Transfer(перевод) с событиями SenderReject, SenderAccepted, SenderSent, ReceiverRecieved, ReceiverReject, ReceiverAccepted etc

B>Суть в том, что есть сервис который периодически получает по каждому переводу события и может получиться с момента последней проверки Перевод успел пройти 3 события.

B>То есть по сути получается Перевод идет по графу событий.

Там еще может быть множество проблем — например, во время обработки одного события пришло еще одно по тому же переводу. Или порядок был нарушен. Или что-то еще.

Стоит смотреть в сторону акторных моделей с гарантиями. Я про обработку платежей в рамках платежной системы рассказывал на Highload++ и РИТ, можешь поискать доклады. Ну или вообще обратиться за консультациями )
Re: последовательность событий
От: itslave СССР  
Дата: 11.04.18 15:20
Оценка:
Здравствуйте, busk, Вы писали:

B>Есть система платежей.

B>Система отправляет платеж во внешнюю систему и периодически трекает статус.
B>Есть класс Transfer(перевод) с событиями SenderReject, SenderAccepted, SenderSent, ReceiverRecieved, ReceiverReject, ReceiverAccepted etc

B>Суть в том, что есть сервис который периодически получает по каждому переводу события и может получиться с момента последней проверки Перевод успел пройти 3 события.

B>То есть по сути получается Перевод идет по графу событий.

B>И надо в зависимости от вершины чтото сделать в системе.

B>Как это делать чтобы не получилось много макарон?

Выбрать последнее событие, с нужным correllation id и вызвать сооотвествующий метод? Да миллион способов, банально начиная паттерна strategy.
Re: последовательность событий
От: Слава  
Дата: 11.04.18 15:39
Оценка:
Здравствуйте, busk, Вы писали:

B>То есть по сути получается Перевод идет по графу событий.


Можете для разнообразия взять Windows Workflow Foundation и хранить flow в базе Sql Server. Макарон правда будет много.
Re[2]: последовательность событий
От: itslave СССР  
Дата: 13.04.18 16:24
Оценка:
Здравствуйте, Слава, Вы писали:

С>Можете для разнообразия взять Windows Workflow Foundation и хранить flow в базе Sql Server.


Лучше это не брать.
Re[3]: последовательность событий
От: Слава  
Дата: 13.04.18 20:26
Оценка: :)
Здравствуйте, itslave, Вы писали:

С>>Можете для разнообразия взять Windows Workflow Foundation и хранить flow в базе Sql Server.


I>Лучше это не брать.


Ну я ж пишу — для разнообразия. "Have a lot of fun...", как писала SUSE Linux после загрузки, и фана действительно было много.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.