2016-05-23 2 views
0

У меня есть машина для клиентов и сервер. Обе машины находятся в одной сети. Если приложение на компьютере-клиенте пытается отправить что-то в очередь на сервере, это служба MSMQ, способная обрабатывать ситуацию, когда серверная машина внезапно отключается? Предполагая, что некоторые выпущенные сообщения уже доставлены, будет ли она пытаться повторно передать очередь каждый, то есть 5 секунд? Я не могу найти соответствующую информацию об этом.Как MSMQ обрабатывает соединение с удаленной машиной

Кроме того, моя идея заключается в использовании MSMQ в качестве посредника между приложением на клиенте и приложением на сервере, где клиент < -> соединение с сервером очень ненадежно. Я думал, что вместо того, чтобы писать собственную реализацию восстановления из-за перерыва в ссылке, я просто позволю MSMQ сделать это, отправив сообщения с клиентской машины на серверную машину и сообщив серверному приложению из локальной (серверной) очереди. Правильно ли это сделать? Будет ли это работать на машинах, которые не входят в AD? Возможно, если они находятся в AD, общественная очередь будет идти, если она должна дублироваться по сети?

ответ

1

MSMQ опирается на:

  1. Механизм TCP/IP повторная попытка
  2. MSMQ повторить механизм

обеспечить доставку сообщений. Обратите внимание, что механизм доставки отличается для экспресс-сообщений (с оплатой-и-забыть) и транзакционных (гарантированных) сообщений. MSMQ отправляет сообщения подтверждения в системные очереди для обеспечения доставки. Существует также duplicate detection mechanism.

«Правильно ли это сделать?»
Да, вы обсуждаете классическую модель MSMQ.

«Будет ли это работать на машинах, которые не входят в AD?»
AD не влияет на то, как MSMQ отправляет сообщения.

«Возможно, если они находятся в AD, общественная очередь будет способ пойти, если она должна дублироваться по сети?»
Все объявления AD позволяют хранить информацию о очереди. Сама очередь существует только в одном месте. AD просто реплицирует, как найти эту очередь. В большинстве случаев AD - это лишние накладные расходы для MSMQ. Во что бы то ни стало используйте MSMQ на машинах с доменными именами, но не чувствуйте, что вам приходится использовать публичные очереди только потому, что они есть.