2009-05-07 5 views
4

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

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

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

ответ

0

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

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

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

2

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

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

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

+0

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