2011-05-04 3 views
2

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

В основном я планирую иметь функцию WCF для фасада, называемую http. Служба фасада должна только записывать все входящие сообщения в очередь, чтобы быстро реагировать на вызывающую систему. Затем сообщения в очереди должны обрабатываться другим компонентом, либо службой WCF, либо службой Windows, зависящей от моего выбора очереди.

Продукт работает на сбалансированной нагрузке среде с 2-мя веб-серверами.

варианты я рассматриваю и вопросы, которые я получил являются:

  1. Для того, чтобы фасад WCF писать в MSMQ и затем anothther службы WCF для чтения из этой очереди, чтобы сделать обработку сообщений. То, что я не чувствую уверенности в этой альтернативе из того, что я прочитал, - это то, как это будет работать в условиях сбалансированной нагрузки.

1A. Где должен размещаться MSMQ (ы)? Один на каждом веб-сервере? Один на отдельном сервере? Mulitple на отдельном сервере? (не учитывая необходимость сокращения и данные в редких случаях могут быть потеряны и повторно отправлены)

1B. Как это повлияло на дизайн, если я хочу, чтобы система была избыточной? Я хотел бы быть уверенным, что потеряю сервер (он больше не появляется в сети), удерживая MSMQ, не теряя данные в этой очереди. Из того, что я прочитал о MSMQ, это оставляет мне единственный вариант размещения MSMQ в кластере окон. Это верно? (Я хотел бы избежать использования кластера Windows для этого).

  1. Второй вариант дизайна - позволить службе WCF фасада записывать очередь в базу данных. Затем выполните две или более службы Windows для обработки очереди. У меня нет вопросов по этой альтернативе. Если вы задаетесь вопросом, почему я не выбираю этот, поскольку мне кажется, что это проще для меня, это потому, что я хотел бы создать это, не представляя каких-либо служб Windows для решения, что я верю в функциональность MSMQ, которую я не хочу код сам, и мне также интересно, как использовать MSMQ, поскольку я никогда не использовал его раньше.

С наилучшими пожеланиями Хакан

ответ

0

После прочтения некоторых больше на индивидуален я бессмыслица решил не использовать MSMQ. Кажется, у меня действительно нет причин идти по этому пути. Мне нужно, чтобы это было не транзакционным, и, насколько я понимаю, ни одно из методов ведения журнала или мертвой буквы не поможет мне с требованием резервирования.

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

MSQM только добавит сложности к захватывающему решению, другому методу и, возможно, другому серверу, который будет отслеживать.

Чтобы получить полное избыточное количество, чтобы предотвратить потерю данных в MSMQ, мне понадобится кластер Windows или реализация send/receive в несколько идентичных очередей. Я не хочу делать ни того, ни другого.

Все это ведет меня к моему приложению с фасадом WCF, принимающему письменные вызовы http-вызовов в очередь базы данных. Эта база данных уже защищена от потери данных. Очередь будет опробована несколькими активными экземплярами Windows Servce, содержащими всю тяжелую бизнес-логику. При низком приоритете процесса эти службы могут размещаться на уже существующих узлах, используемых веб-приложением с нагрузкой. Если у меня будет время использовать MSMQ или если мне понадобится это по другой причине в моем приложении, я могу изменить свое решение.

2

ОК, так что вы не используете WCF с интеграцией MSMQ, вы используете WCF для создания сообщений MSMQ в качестве конечного продукта. Это упрощает «как мне загрузить баланс MSMQ?»

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

Вам не нужно кластеризовать MSMQ, чтобы сделать его упругим. Вместо этого вы можете сделать свой код устойчивым, чтобы он справлялся с потерянными сообщениями, используя очереди заметок, транзакционные очереди, ведение журнала и т. Д.Аппаратные средства кластеризации является простой вариант :-)

+0

Вы упомянули два варианта: центральную очередь или локальные очереди с центральным приемником. Я прочитаю ссылки, которые вы предоставили, возможно, они помогут. Я дам Вам знать. Поскольку я новичок в том, как делать WCF-MSMQ, я не знаю, как то, что я думаю, отличается от «WCF с интеграцией MSMQ». –

+0

«WCF с интеграцией MSMQ» означает использование MSMQ в качестве транспортного протокола вместо HTTP для предоставления вызова WCF службе. –

+0

Как это отличается от того, что «интеграция WCM MSQM» спасает меня от некоторого кодирования? –

Смежные вопросы