Я думаю о добавлении функции очереди в продукт, основанный на множестве служб WCF.Я читал кое-что о MSMQ, сначала я подумал, что это то, что мне нужно, но я не уверен и собираюсь просто поместить очередь в таблицу базы данных.Интересно, кто-то здесь получил какие-то отзывы о том, куда идти.
В основном я планирую, чтобы служба WCF для фасада называлась через http.Фасадная служба должна только записывать все входящие сообщения в очередь, чтобы дать быстрый ответ вызывающей системе.Сообщения в очереди должны затем обрабатываться другим компонентом, либо службой WCF, либо службой Windows, в зависимости от выбора очереди.
Продукт работает в среде с балансировкой нагрузки от 2 до n веб-серверов.
Варианты, которые я рассматриваю, и вопросы, которые я получил:
- Чтобы позволить фасадному WCF записывать в MSMQ, а затем иметь другое чтение службы WCF из этой очереди, чтобы выполнитьобработка сообщений.Что я не чувствую уверенности в этой альтернативе из того, что я прочитал, так это как она будет работать в среде с балансировкой нагрузки.
1А.Где должны быть размещены MSMQ?Один на каждом веб-сервере?Один на отдельном сервере?Несколько на отдельном сервере?(без учета необходимости избыточности и того, что в редких случаях данные могут быть потеряны и отправлены повторно)
1B.Как это повлияло на дизайн, если я хочу, чтобы система была избыточной?Я хотел бы иметь возможность потерять сервер (он больше никогда не подключится к сети), содержащий MSMQ, без потери данных в этой очереди.Из того, что я читал о MSMQ, я оставляю единственную возможность размещения MSMQ в кластере Windows.Это верно?(Я бы хотел избежать использования кластера Windows для этого).
- Вторая альтернатива проекта - позволить службе WCF фасада записывать очередь в базу данных.Затем подготовьте две или более служб Windows для обработки очереди.У меня нет вопросов по этой альтернативе.Если вы удивляетесь, почему я не выбрал этот вариант, так как он кажется мне более простым, то это потому, что я хотел бы создать его, не вводя никаких оконных сервисов в решение, поэтому я считаю, что MSMQ получил функциональность, которую я не хочусам кодирую, и мне также любопытно использовать MSMQ, поскольку я никогда не использовал его раньше.
С наилучшими пожеланиями Håkan