Я изучал различные коммуникационные технологии / архитектуры / шаблоны / реализации (читай: умные слова), включая веб-сервисы (WCF, Axis2), ESB, SOA, и хотел узнать больше о JMS в отношении обмена сообщениями.
Концептуально JMS звучит просто. Я считаю, что это промежуточный брокер, который управляет сообщениями от издателей и направляет их соответствующим подписчикам. Это делается путем помещения сообщений в очередь по мере их публикации и удаления их из очереди по мере их получения.
Вопрос 1: Правильно ли мое базовое понимание JMS?
Одна из вещей, которая мешает мне при чтении о технологиях, это когда определенный уровень (преднамеренного или непреднамеренного) махания рукой делается для какой-либо функции.
Исходя из моего базового понимания, для отправки или получения сообщений должен быть запущен JMS-провайдер. Мое предположение о публикации заключается в том, что JMS-провайдер просто ждет публикации сообщения и сохраняет его в очереди (в зависимости от реализации или в памяти или в базе данных). Тем не менее, я не совсем уверен, как работает прием.
Вопрос 2: Получает ли (как правило) блокировку, если нет доступных сообщений?
Вопрос 2b: Если да, то как достигается блокировка? Клиент постоянно опрашивает сообщения? Сервер просто не отвечает, пока сообщение не опубликовано (как это работает без тайм-аута?) Инициирует ли провайдер вызов получателю?
Вопрос 2c: Если нет, то как обеспечить своевременное получение сообщений без ущерба для производительности?
Базовое описание, кажется, склоняется к одному провайдеру JMS, чтобы гарантировать централизованное управление сообщениями, а не потерю. Я вижу, что проблема заключается в масштабировании.
Вопрос 3: Как масштабируется JMS?
При масштабировании я вижу сложности с обеспечением доставки одного сообщения всем соответствующим подписчикам, независимо от того, какой физический сервер получает сообщение.
Вопрос 3b: Как реализация JMS обеспечивает надежную доставку в масштабируемой среде?
Обратите внимание, что хотя эти вопросы относятся к JMS, они, вероятно, относятся к любой инфраструктуре обмена сообщениями. Я приветствую ответы, специфичные для JMS, а также ответы, которые являются более общими или даже специфичными для другой технологии.