NServiceBus - Как убедиться, что SagaData синхронизируется между рабочими серверами? - PullRequest
0 голосов
/ 23 мая 2018

В NServiceBus 4.6.5 сообщения отправляются на рабочие серверы с использованием алгоритма Round-Robin.

У меня есть некоторые данные в Sagas для обнаружения несинхронизированных деловых сообщений.Эти данные хранятся в базе данных Oracle.

Как убедиться, что все серверы совместно используют одну и ту же SagaData (в синхронизации), так что если один сервер вносит изменения в эту SagaData, другие серверы SagaData становятся недействительнымии обновляется автоматически?

Я читал this , а в NServiceBus 4.6.5 я реализую интерфейс ISagaPersister и сохраняю все в базе данных Oracle.

Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Это полностью обрабатывается вашей базой данных.Каждый раз, когда ваша сага получает доступ, ее состояние извлекается из базы данных, это не кэшируется NServiceBus.Это состояние в базе данных блокируется либо оптимистически с использованием оптимистического управления параллелизмом, либо пессимистически с использованием блокировок базы данных, управляемых транзакцией базы данных.

Если вы настраиваете конфигурацию NHibernate, то вы используете ее, то вы можете настроить 2-й уровенькэширование в NHibernate, но этого следует избегать, если вы используете несколько серверов, если вы не используете распределенный кеш.

...