Как работает JMS Receive внутри?

Я исследовал различные коммуникационные технологии / архитектуры / шаблоны / реализации (читай: модные слова), включая веб-службы (WCF, Axis2), ESB, SOA, и хотел чтобы узнать больше о JMS в отношении обмена сообщениями.

Концептуально JMS звучит просто. Я считаю, что это ' s промежуточный брокер, который управляет сообщениями от издателей и направляет их соответствующим подписчикам. Это делается путем постановки сообщений в очередь по мере их публикации и удаления из очереди по мере их получения.

Вопрос 1: Верно ли мое базовое понимание JMS?

Одна из вещей, которая беспокоит меня при чтении о технологиях, - это когда определенный уровень (преднамеренного или непреднамеренного) размахивания руками выполняется в отношении функции.

Исходя из моего базового понимания, поставщик JMS должен быть запущен, чтобы отправлять или получать сообщения. Мое предположение о публикации заключается в том, что поставщик JMS просто ожидает публикации сообщения, а затем сохраняет его в очереди (с поддержкой памяти или базы данных, в зависимости от реализации). Однако я не совсем уверен, как работает прием.

Вопрос 2: Блокируется ли получение (обычно), если сообщения недоступны?

Вопрос 2b: Если да, то как достигается блокировка? Клиент постоянно запрашивает сообщения? Сервер просто не отвечает до тех пор, пока сообщение не будет опубликовано (как это работает без тайм-аута?). Инициирует ли провайдер вызов получателю?

Вопрос 2c: Если нет, как обеспечить своевременное получение сообщений способом, не влияя на производительность?

Основное описание, кажется, склоняется к единственному поставщику JMS, чтобы гарантировать, что сообщения управляются централизованно, а не потеряны. Я вижу, что масштабирование является проблемой.

Вопрос 3: Как масштабируется JMS?

При масштабировании я вижу сложности с обеспечением доставки одного сообщения всем соответствующим подписчикам, независимо от того, какой физический сервер получает сообщение.

Вопрос 3b: Как реализация JMS обеспечивает надежную доставку в масштабируемой среде?

Обратите внимание, что, хотя эти вопросы относятся к JMS, они, вероятно, применимы к любой инфраструктуре обмена сообщениями. Я приветствую ответы, специфичные для JMS, а также более общие или даже специфические для другой технологии.

33
задан Travis 11 May 2011 в 03:57
поделиться