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