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