MSMQ + WCF в размещенной среде - PullRequest
0 голосов
/ 15 апреля 2011

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

Мы думаем, что мы будем использовать дешевый хостинг (общий, не выделенный) для совершения звонков, но нам нужны звонки, чтобы быть надежными. Если целевой сервер недоступен, сообщение должно быть повторено несколько раз, прежде чем произойдет сбой.

Доступ к веб-странице> сайт добавляет запрос в очередь> сообщение доставлено в конечную точку назначения

Это совместимо с общим хостингом? Какие есть другие варианты, если WCF + MSMQ не работает?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Если вы можете использовать Server 2008 для службы WCF с конечной точкой netMsmqBinding для вызова общего хоста, то вы можете воспользоваться расширенными функциями обработки сообщений MSMQ 4.С небольшим дополнительным кодированием WCM netMsmqBinding может быть настроен на автоматическую повторную попытку сообщения с ошибкой, а также удаление сообщения с ошибкой из очереди в специальную опасную очередь, чтобы служба могла продолжить обработку сообщений.Вы можете вручную переместить сообщения из ядовитой очереди обратно в основную для повторной обработки, когда хост общего ресурса снова станет доступен, или написать другую службу для автоматической обработки этой задачи. Эта статья о MSDN должна послужить хорошим началом для настройки службы WCF на основе MSMQ, а в этой статье показано, как работает обработка ядовитых сообщений .

0 голосов
/ 20 апреля 2011

В общедоступной среде хостинга это зависит от хоста, если они позволят вам использовать MSMQ (или даже rabbitQ, который вы не сможете установить самостоятельно).

WCF поверх MSMQ работает, когда WCF записывает сообщение в очередь, затем MSMQ обрабатывает доставку сообщения к цели, а затем активирует WCF с сообщением, как если бы вы вызывали его через SOAP.

Итог: вам нужно будет проверить, будет ли ваш хост разрешать очереди сообщений. Если это так, убедитесь, что вы добавили к ним защиту, чтобы другие сайты на сервере не могли получить к ним доступ.

Если MSMQ не установлен на сервере, вы не можете использовать net MsmqBinding

...