2011-05-23 4 views
0

Мне нужен рабочий процесс, который может получать несколько сообщений из MSMQ.WF4: Как настроить рабочий процесс для приема нескольких сообщений

Пример:

Receive: CreateWorkflow (CanCreateInstance=True) 
Do Something... 
Parallel (CompletionCondition=ExitParallel) 
    Parallel Branch 1 
     Receive: Update (CanCreateInstance=False, Use correlation) 
     Process... 
    Parallel Branch 2 
     Receive: Finish (CanCreateInstance=False, Use correlation) 
     Set ExitParallel=True 

Я хотел бы, чтобы мой рабочий быть в состоянии получить несколько сообщений Update. Однако в этой настройке он может принимать только 1. Согласно this MSDN post, это должно сработать, но я никогда не получал это для работы.

Является ли решение помещать бесконечный цикл while в параллельную ветвь 1? Есть ли другой способ?

ответ

1

Чтобы получать несколько сообщений об обновлении, вам нужно будет поместить это получение в цикле. То, как вы установили его прямо сейчас, обновление разрешено один раз, и Parallel ожидает только вторую ветвь с завершением Finish.

+0

Помещение приема в петлю работает. Существует вероятность того, что появляется другое сообщение «Обновить», когда рабочий процесс обрабатывает предыдущее сообщение «Обновить». В этом случае рабочий процесс не принимается. Будет ли сообщение потеряно? Или сообщение ожидает, пока рабочий процесс вернется к приему? – Mas

+0

У службы рабочего процесса есть свойство AllowBufferedReceive, которое позволяет отправлять сообщения в очередь до того, как они станут процессами, и позволит вам вернуться к Получателю и прочитать второй запрос. – Maurice

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