Я нахожусь на начальном этапе исследования решения для очереди сообщений для C #, и я был бы признателен за любой опыт, извлеченные уроки, военные истории и т. Д. У меня также есть пара конкретных вопросов о пригодности MSMQ для нашей конфигурации.
Вкратце, у нас есть распределенная архитектура: различные события на стороне сервера генерируют рабочие элементы, которые извлекаются нашими развернутыми клиентами. Эти клиенты подключаются к серверу, получают работу и обрабатывают ее, а затем возвращаются к «ожиданию выполнения работы».
Несколько важных сведений об этих клиентах:
- Сегодня у нас есть несколько сотен клиентских установок, и мы должны быть готовы к росту до десятков тысяч в следующие 18 месяцев.
- Клиенты никогда не отправляют задачи на сервер - они «только для извлечения».
- Полезная нагрузка для клиентов составляет <= 1 КБ каждый. </li>
- Нам не нужна расширенная аутентификация и шифрование трафика (хотя это и неплохой бонус)
- Наши клиенты работают в различных операционных системах MS,> = WinXP-SP1. Некоторые из них являются частью активных каталогов Windows или доменов Windows или специальных рабочих групп.
- В основном клиенты бездействуют. Мы хотим эффективно «ждать работы», а затем как можно быстрее реагировать на работу (т.е. мы хотим, чтобы клиенты получали рабочий элемент как можно скорее после его постановки в очередь)
- Иногда наши клиенты на некоторое время исчезают из Интернета: их машины отключаются на день или на ночь и т. Д. Мы хотим, чтобы рабочие элементы приходили, когда они снова подключаются к сети. Другими словами, нам нужна надежность сообщений.
- Мы контролируем весь клиентский и серверный код, но не клиентские среды (хотя наши установщики устанавливают необходимое программное обеспечение, например .NET 3.5, если его там еще нет)
Итак, учитывая вышесказанное - MSMQ будет работать "естественно" для нас? Я не нашел четкого ответа на вопрос, как (или если) MSMQ обрабатывает клиентов, прослушивающих сообщения, когда их нет в доменном / активном каталоге и когда они подключаются через Интернет. Пока что мои чтения по MSMQ кажутся довольно "ориентированными на предприятия" - не будет ли наше требование не для предприятия проблемой MSMQ?
Какие еще решения вы использовали в прошлом в подобных установках?
И, конечно, какие еще вопросы я должен задавать? ; -)
Спасибо!