Реализация очереди для службы WCF - PullRequest
2 голосов
/ 13 апреля 2011

Мне нужно предложение по дизайну очереди для моей службы WCF. Итак, у меня есть сервис wcf и много клиентов. Клиенты генерируют сообщения и помещают их в очередь для обработки моей службой. Служба обрабатывает их асинхронно, и клиентам не требуется обратный вызов или ответ при помещении сообщения в очередь.

Моему сервису необходимо удалить сообщение из очереди для обработки с несколькими потоками. Но если моя служба остановится или выйдет из строя или произойдет немедленное отключение сервера - эта служба должна повторно обработать сообщение, которое не требует обработки.

Итак, я рассматриваю реализацию очереди msmq. Msmq позволяет мне сделать хорошую очередь, но как реализовать это требование: обработать сообщение, которое не было обработано до конца?

Может быть, кто-нибудь предложит мне еще одну ставку. Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2011

Итак, наконец, я выбираю транзакции в MSMQ и передаю объект транзакции в поток для безопасной работы с MSMQ.Это довольно быстро.

0 голосов
/ 13 апреля 2011

Ключом здесь является то, на какой серверной ОС работает машина, на которой работает ваш сервис.Если вы используете Server 2008 (или технически Vista), то вы можете воспользоваться преимуществами автоматической обработки вредоносных сообщений MSMQ 4.Это автоматически удаляет сообщение из очереди в специальную очередь отравлений, чтобы служба могла продолжить обработку сообщений.В MSMQ 3 вы должны были сделать это в своем коде. Эта статья о MSDN должна дать хорошее начало, а в этой статье показан отравленный код обработки сообщений.

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

...