MSMQ в ферме серверов
Мы рассматриваем возможность использования MSMQ в качестве службы обработки сообщений в нашем приложении. Что нам нужно, так это MSMQ в ферме серверов, расположенных позади Network Load Balancer (NLB), которая распределяет нагрузку между узлами. У меня есть следующие вопросы, по которым я не смог найти никаких указателей онлайн.
1) Нужно ли устанавливать MSMQ во всех узлах?
2) Если да, то когда отправляющее приложение отправляет сообщение в MSMQ, должно ли оно отправляться на все узлы?
3) Если ответ на мой второй вопрос положительный, то когда клиентское приложение получает сообщение, как другие узлы должны быть уведомлены о получении сообщения клиентом и впоследствии удалены из него?
Был бы признателен за любую помощь / указатели.
1 ответ
Вот некоторые сообщения в блоге, которые могут помочь:
- Нефть и вода - транзакционные сообщения MSMQ и балансировка нагрузки
- Балансировка нагрузки MSMQ - краткое обсуждение
Q1) Нужно ли устанавливать MSMQ на всех узлах?
A1) Вам необходимо установить MSMQ на каждом сервере, чтобы сообщение также доставлялось.
Q2) Если да, то когда приложение отправителя отправляет сообщение в MSMQ, должно ли оно отправляться на все узлы?
A2) Это один из способов балансировки нагрузки, когда вы отправляете X-сообщения на X-узлы, но читаете только с 1-го узла, отбрасывая другие копии.
Другой метод заключается в отправке на балансировщик сетевой нагрузки, который отправляет одно сообщение одному случайно выбранному узлу, хотя MSMQ очень липкий, поэтому очень трудно / невозможно таким образом сбалансировать загрузку больших объемов.
В3) Если ответ на мой второй вопрос положительный, то когда клиентское приложение получает сообщение, как другие узлы должны быть уведомлены о получении сообщения клиентом и впоследствии удалены из него?
A3) Это обратная сторона предложенного типа балансировки нагрузки. MSMQ не удалит сообщение, пока ваше приложение не удалит его или не истечет таймер TimeToBeReceived. в основном, вам нужно иметь скоординированные клиентские приложения, если вам нужно избежать обработки дублирующихся сообщений.
ура
Джон Брейквелл