Внедрение системы подписчика / издателя с MSMQ с динамическими конечными точками - PullRequest
0 голосов
/ 21 апреля 2009

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

Я искал NServiceBus, но, похоже, мне нужно было создать сервис / исполняемый файл / веб-сервис для каждой системы прослушивания (это немного меньше работы для создания C # dll и вызова метода), и я не уверен NServiceBus может обрабатывать динамические конечные точки на основе предварительно загруженного конфига (загруженного из БД). WCF также является выбором .. он может обрабатывать динамические конечные точки наверняка ..

Как вы думаете, что является лучшим решением для арендного объема кода / масштабируемого для новых систем для подписки?

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 мая 2009

Кажется, вы ищете сервисный хост, а не брокер сообщений. Если это так, Microsoft рекомендует размещать ваши службы WCF в IIS. Они все еще могут использовать MSMQ в качестве транспорта, но сами службы будут управляться IIS. IIS значительно развился с первых дней своего существования в качестве HTTP-сервера, теперь он ближе к серверу приложений, с его выбором транспортов (TCP, MSMQ, HTTP), пула, активации, политик времени жизни и т. Д.

Хотя WCF + MSMQ + IIS несколько усложняется, это цена, которую вы платите за игру на поле Microsoft.

Для удобного и простого брокера сообщений вы можете использовать Active MQ вместо MSMQ, он даст вам брокерство сообщений, а также pub / sub. Работать в .NET довольно просто, перейдите по этой ссылке: http://activemq.apache.org/nms/

2 голосов
/ 21 апреля 2009

Если вы в порядке с онлайн-решениями, вы можете взглянуть на последний .NET Services SDK для Windows Azure, который имеет шину обслуживания очереди http://www.microsoft.com/azure/netservices.mspx Он опирается на сообщения WCF, поддерживает маршрутизацию и т. Д. об этом здесь http://vasters.com/clemensv/default.aspx

Еще один фреймворк, который вы можете попробовать - MassTransit http://code.google.com/p/masstransit/

...