DDD Шина Связи Контекстных Сообщений

Я интегрирую различные контексты с Windows Service Bus и у меня есть несколько вопросов:

1) Как выявляются дубликаты в других ограниченных контекстах? Сохранить последнюю обработанную последовательность сообщений? Я хочу, чтобы возможность повторно запускать события, чтобы позволить повторную синхронизацию новых ограниченных контекстов HandleEvent(OrderPlaced orderPlaced, bool isReplay) которые будут закуплены для производства в будущем для первоначальной синхронизации.

2) Для меж-контекстной шины сообщений, будем ли мы использовать тему для ограниченного контекста (и иметь пространство имен для группировки ограниченных контекстов)? Или один ограниченный контекст для каждого пространства имен?

3) В документации по шине сообщений говорится, что сообщения могут поступать не по порядку. Какой алгоритм следует использовать для повторной сборки по порядку? Что произойдет, если сообщения 6 и 8 были получены, а 7 не пришли? Будем ли мы ждать указанное время, а затем просто продолжим? Как разрешить самовосстановление?

4) Я полагаю, что вышеупомянутое довольно распространено почти во всех проектах DDD. Существуют ли какие-либо библиотеки, которые обрабатывают сообщения, включая протокол команда / ответ, для запроса синхронизации предыдущих событий из внешнего ограниченного контекста?

1 ответ

Решение

Это не отвечает на большинство ваших вопросов, но дает вам альтернативу.

Многие из этих проблем ушли, когда я начал тянуть события вместо того, чтобы подталкивать их ко мне. Если я тяну, я просто сохраняю контрольную точку номера события, до которого я обработал. Когда мне нужно восстановить, я удаляю прочитанные модели и контрольную точку, и новые считанные модели будут созданы автоматически. Поскольку я использую один писатель, дубликаты не проблема. Заказ тоже не проблема.

У нас все еще есть события, которые вытесняются, но они используются только для реактивного поведения. Например; Когда заказ размещен, распечатайте билет.

Имеет ли это смысл для вас, зависит от того, насколько быстро вам нужно реагировать на события и насколько свежими должны быть ваши данные (1 секунда против 30 секунд и т. Д.).

Другие вопросы по тегам