2008-11-20 3 views
0

Я построил балансировщик/маршрутизатор нагрузки WCF, чтобы условно маршрутизировать любую услугу одного маршрута на несколько конечных точек, используя привязки MSMQ. Я также создал узел, который использует все конечные точки маршрутизатора для принятия вызовов службы. Вся конечная точка указывает один и тот же контракт.msmq с несколькими конечными точками и параллельной обработкой

Мне нужно, чтобы каждая очередь (конечная точка) обрабатывалась одновременно, но каждый вызов службы обрабатывался последовательно.

Я пробовал использовать InstanceContextMode = InstanceContextMode.Single и ConcurrencyMode = ConcurrencyMode.Single, но это дает мне только один экземпляр, обрабатывающий все мои конечные точки. InstanceContextMode = PerCall не гарантирует порядок, который мне нужен.
Мне нужен только один экземпляр службы на конечную точку, которая будет работать одновременно.

Я также пробовал различные перестановки, используя ServiceBehavior из

ReleaseServiceInstanceOnTransactionComplete = true/false. 

Как бы я сделать это с WCF с помощью MSMQ привязок?

ответ

1

Поместите свою конфигурацию так, чтобы она была немного понятнее. Вы также можете контролировать, как WCF выполняет вызовы, определяя свой собственный контекст синхронизации. Я получил это для другого проекта, и я разместил код в этой статье

http://www.codeproject.com/KB/threads/SynchronizationContext3.aspx

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