2016-12-16 3 views
1

Мы использовали Reactive Extension для запуска определенных действий в определенное время.Реактивное расширение .Net - высокая доступность

Пример: через две минуты после определенного действия пользователя сделайте что-нибудь.

Синтаксис:

var observable = Observable.Timer(new TimeSpan(0, 0, someTime)).Take(1); 
var subscribe = observable.Subscribe(i => 
        { 
         DoSomething(); 
         } 
        }); 

Но теперь, если/сервер IIS перезапускается, этот триггер теряется. Это необходимо для сохранения, поскольку у нас есть высокодоступное развертывание с несколькими серверами приложений, на которых размещен код.

Помогите нам в подходе к решению этого вопроса.

+0

Что вы все пробовали? – Asti

+0

Мы решили использовать кластер Quartz.Net в качестве альтернативы, но это означало бы изменение существующего кода. –

+0

Стойкость состояния программы слишком сложна для обобщения. Все ваши обратные вызовы не захватываются? – Asti

ответ

4

Но теперь, если IIS/сервер перезагружен, этот триггер будет потерян. Этот должен быть сохранен, поскольку у нас есть высокодоступное развертывание с несколькими серверами приложений, на которых размещен код.

Вероятно, реактивные расширения не являются ответом здесь.

Кажется, что вы должны использовать очереди сообщений или служебную шину .

Проверьте эти технологии, если вы хотите, чтобы вырыть больше об этом подходе:

Кроме того, обратите внимание на MassTransit, автобус службы, который может использовать некоторые из выше технологий обмена сообщениями.

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