2015-03-13 1 views
1

Мы используем Cirqus в качестве хранилища событий (в SQL Server), но наши представления обрабатываются вручную (обработка отправленного события через пользовательский IEventDispatcher) в RavenDb.Cirqus - Откат событий

Проблема возникает, когда по какой-либо причине один из обработчиков для отправленного события терпит неудачу. В этой ситуации событие было отправлено в магазин, но «представления» не синхронизированы с тем, что в хранилище событий. В нашем случае это становится проблемой.

Что было бы лучшим способом подойти к этой ситуации и «избавиться от» несоответствия? Примечание: включение всей операции внутри распределенной транзакции (через TransactionScope) не является возможным.

Мы используем 0.41.0, и мы хотели бы избежать обновления, если это возможно.

ответ

0

Мне нравится, что вы говорите, что не хотите зачислять все в транзакцию - и потому, что это невозможно сделать, а в основном потому, что я не думаю, что это имеет смысл.

Как я вижу, домен не должен зависеть от способности просмотра догонять. Я думаю, вы должны, конечно, быть очень осторожными, чтобы писать мнения, чтобы они не могли потерпеть неудачу, но в случае неудачи одного из взглядов , самое лучшее, что он может сделать, это зарегистрировать его как ошибку (или сообщить об этом иначе не удалось) и прекратить обработку событий.

Как это обрабатывается с помощью диспетчеров виджетов Cirqus (размещенных на ViewManagerEventDispatcher), просто останавливая обработку событий в случае сбоя. И тогда, если сбой является временным, представления автоматически возобновляют обработку событий, когда сбой окончен.

Таким образом, виды не будут пропускать обработку каких-либо событий. Но вы, вероятно, должны быть осторожны, чтобы написать свои взгляды, чтобы они вряд ли потерпели неудачу.

 Смежные вопросы

  • Нет связанных вопросов^_^