MSMQ для обмена данными между сервером и клиентом - PullRequest
4 голосов
/ 07 мая 2009

Мы искали в MSMQ постоянную «push» связь между сервером и клиентом. На одном сервере может быть до 1000 клиентов.

В одном из наших тестов мы отправили небольшое сообщение 300 автономным клиентам, а затем отправили сообщение онлайн-клиенту. Последнее сообщение было задержано более чем на 40 минут, поскольку MSMQ пробирался через недоставленные сообщения (наблюдаемые через MMC). Мы также используем MSMQ для обратного пути, где он работает хорошо.

Есть ли способ сделать MSMQ подходящим для этой схемы использования, сократив время, которое он пытается подключить к автономному хосту? Если нет, то есть ли какой-либо другой продукт для очередей, который бы лучше подходил, или это ваш собственный день? Необработанная пропускная способность не является приоритетом, но количество исходящих очередей и предсказуемость / максимальная задержка равны, как и объем памяти на клиентах (которые могут быть довольно старыми машинами).

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

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

Быстрое исправление в вашем автономном сценарии может заключаться в увеличении количества потоков, доступных для MSMQ, который использует поток для исходящей очереди. Каждая попытка подключения в автономном режиме занимает некоторое время, блокируя поток. http://technet.microsoft.com/en-us/library/cc957498.aspx Попробуйте создать столько потоков, сколько сможете.

Мои коллеги работали с ActiveMQ и сказали, что он гораздо более гибок, но при этом работает лучше. Я лично не работал с этим, но я бы изучил это, если вы не привязаны к .Net.

0 голосов
/ 01 декабря 2010

Наше решение состояло в том, чтобы программно приостанавливать очереди для компьютеров, которые были отключены (у нас уже было UDP-сообщение о том, работают ли клиенты) через один из COM-интерфейсов управления MSMQ.

При приостановленных очередях на известные отключенные хосты MSMQ тратил гораздо меньше времени на обработку недоставленных сообщений.

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

...