msmq с несколькими конечными точками и одновременной обработкой - PullRequest
0 голосов
/ 20 ноября 2008

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

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

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

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

ReleaseServiceInstanceOnTransactionComplete = true/false.

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

1 Ответ

1 голос
/ 27 марта 2009

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

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

...