Балансировка нагрузки WCF и совместное использование удаленного MSMQ для высокой пропускной способности - PullRequest
6 голосов
/ 31 марта 2010

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

Следующий абзац взят из Best Practices для связи в очереди http://msdn.microsoft.com/en-us/library/ms731093.aspx Для достижения более высокой пропускной способности и доступности используйте ферму служб WCF, которые читают из очереди. Это требует, чтобы все эти сервисы выставляли один и тот же контракт на одной и той же конечной точке. Подход фермы лучше всего подходит для приложений с высокой производительностью сообщений, поскольку он позволяет нескольким службам читать все из одной очереди.

Это то, что я пытаюсь решить. У меня есть приложение для внутренней сети, где клиент отправляет запрос в службу WCF. Но мне нужна возможность балансировки нагрузки служб WCF на нескольких серверах в ферме. Я также хочу, чтобы эти службы WCF в ферме выполняли транзакционные операции чтения из удаленного MSMQ, когда элемент доступен в очереди. Если это возможно, у меня проблема в том, что я не понимаю процесс активации WCF для получения сообщений из удаленной очереди. * +1007 *

Если это возможно, кто-нибудь знает какие-либо статьи или веб-трансляции, в которых это подробно объясняется?

BarDev

1 Ответ

4 голосов
/ 08 апреля 2010

Я не знаю ни о каких статьях, но в качестве доказательства концепции я запустил несколько экземпляров существующего wcf-приложения для msmq.

Случилось так, что если 10 сообщений уже присутствовали в очереди, они обрабатывались только одним экземпляром wcf.

Однако все последующие сообщения, которые были отправлены в очередь, были поделены почти поровну между всеми экземплярами wcf, обеспечивая довольно аккуратное решение для балансировки нагрузки.

Что вам нужно сделать, это создать одну службу wcf, работающую с msmq, убедиться, что она работает правильно, а затем перейти к следующему, запустив все больше и больше экземпляров службы wcf, чтобы увидеть, что происходит

...