Рабочий процесс WF4 в AppFabric не возобновляется должным образом после IISreset

Ребята, у меня возникли проблемы с проблемой WF4. Я моделирую пакетный движок / планировщик работы после демонстрации Рона Джейкобса в его веб-трансляции endpoint.tv (http://archive.msdn.microsoft.com/wf4BatchJob). В его примере «рабочая ветвь» просто считается внутри цикла while. В моем примере я отправляю сообщение в другой рабочий процесс, называемый SampleEngine.xamlx, который производит подсчет. При каждом подсчете этот рабочий процесс обращается к родительскому объекту (JobScheduler.xamlx) и сообщает о завершении выполнения. Это работает отлично, и теперь у меня это работает - я могу запланировать задание и наблюдать за его выполнением как на панели инструментов AppFabric, так и путем вызова QueryProgress (пара отправки / получения в моем рабочем процессе планировщика).

Проблема в том, что когда я использую iireset для имитации сбоя сервера или другой проблемы, рабочие процессы (sampleengine.xamlx и jobscheduler.xamlx) возвращаются в оперативный режим и отображаются как «Выполняется». Проблема в том, что никто из них больше не отслеживает события - они вроде где-то застряли. Более того, ни один из них не отвечает на служебные сообщения так, как я обычно вижу, как службы WF отвечают, когда для текущего состояния рабочего процесса не запланировано никаких действий по приему.

Я добавил постоянные действия повсюду и убедился, что сохраняю их после завершения всех моих действий sendreply, но это не имело значения.

Как я уже сказал, единственные изменения, которые я внес в образец Рона, - это то, что моя рабочая ветвь не находится внутри цикла while - она ​​отправляет одно сообщение дочернему рабочему процессу (sampleengine.xamlx) для его запуска. Корреляция между рабочими процессами работает правильно, если сервер не выходит из строя во время выполнения.

Мы будем очень благодарны за любые мысли относительно того, что мне нужно сделать здесь, чтобы рабочие процессы продолжились с того места, где они остановились после IISreset. Образец Рона продолжал считать, где мой просто останавливается.


person Kevin Hoffman    schedule 11.04.2011    source источник


Ответы (1)


Убедитесь, что вы включили постоянное хранилище для рабочего процесса в конфигурации AppFabric. По умолчанию он не включен.

person Nate Dudek    schedule 11.04.2011
comment
Уловка заключалась в том, что моя дочерняя служба рабочего процесса находилась в другом приложении, и я пренебрегал включением сохранения рабочего процесса и сохранением простоя для этой службы. - person Kevin Hoffman; 11.04.2011