Главная » Spring » Преимущества JMS Spring

0

Несмотря на всю свою простоту, синхронные взаимодействия на- кладывают некоторые ограничения на удаленные службы и их кли- ентов, наиболее значимые из которых перечислены ниже.

# Синхронные  взаимодействия  предполагают наличие этапов

ожидания. Когда клиент вызывает метод удаленной службы, он вынужден ожидать завершения удаленного метода, прежде чем продолжить работу. Если клиент обращается к удаленной службе достаточно часто и/или служба имеет невысокое быст- родействие, это может отрицательно сказаться на производи- тельности клиентского приложения.

# Клиент тесно связан со службой через интерфейс службы.

Если потребуется изменить интерфейс службы, придется из- менить и все клиентские приложения.

# Клиент тесно связан с местонахождением службы. Клиента

необходимо настраивать, чтобы сообщить ему сетевой адрес службы. Если топология сети изменится, клиентов придется перенастраивать, чтобы указать им новый адрес службы.

# Клиент существенно зависит от доступности службы. Если служ-

ба окажется недоступной, клиент окажется парализованным.

Синхронные взаимодействия имеют право на существование, но перечисленные выше недостатки необходимо учитывать при выборе механизма взаимодействий для своего приложения. Если перечис- ленные ограничения не устраивают вас, подумайте о возможности использования асинхронных взаимодействий с помощью механизма JMS, свободного от этих проблем.

Отсутствие ожидания

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

Поскольку клиенту не приходится ждать, он может заниматься решением других задач. Отсутствие простоя может существенно по- высить производительность клиента.

Ориентированность на сообщения и независимость В отличие от механизма RPC,  суть которого состоит в органи- зации вызовов методов, в основе механизма JMS лежат данные. То

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

Независимость  от  местоположения

Синхронные службы RPC обычно связаны с определенными се- тевыми адресами. Как следствие, клиенты оказываются очень чув- ствительны к изменениям топологии сети. Если IP-адрес или порт службы изменится, потребуется изменить соответствующие на- стройки клиентов, иначе они не смогут получить доступ к службе.

Клиенты JMS, напротив, понятия не имеют, кто будет обрабаты- вать их сообщения или где находится служба. Клиент знает только очередь или тему для отправки сообщений. В результате клиент ока- зывается независимым от службы, при условии что он в состоянии извлекать сообщения из очереди или из темы.

Преимущество независимости от местоположения службы в мо- дели «точка–точка» можно использовать для создания кластеров служб. Если клиенту не требуется знать местоположение службы и единственным требованием службы является доступность брокера сообщений, то нет никаких причин, почему нельзя было бы настро- ить несколько служб на извлечение сообщений из единой очереди. Если службы оказываются перегруженными и начинают запазды- вать, достаточно просто добавить еще несколько экземпляров служ- бы, обслуживающих ту же очередь.

Независимость от местоположения влечет за собой еще один ин- тересный побочный эффект в модели «публикация–подписка». На одну тему может быть подписано несколько служб, извлекающих ко- пии одного и того же сообщения. Но каждая служба обрабатывает сообщение по-своему. Например, допустим, что имеется множество служб, реализующих обработку информации при найме нового ра- ботника. Одна из служб может добавлять работника в систему расче- та заработной платы, другая – в систему учета персонала, а третья – открывает работнику доступ к системам, которые ему потребуются для выполнения своих служебных обязанностей. Каждая служба действует независимо и использует те же исходные данные, что и другие службы, подписанные на получение сообщений из темы.

Гарантированная  доставка

Чтобы клиент мог взаимодействовать с синхронной службой, служба должна быть готова к приему запросов на указанном IP-

адресе с указанным номером порта. Если служба не будет запуще- на или будет недоступна по каким-то другим причинам, клиент не сможет продолжить выполнение.

Когда отправка сообщений производится посредством JMS, кли- ент может быть уверен, что его сообщения будут доставлены службе. Даже если служба окажется недоступна на момент отправки сообще- ния, оно будет храниться, пока служба снова не станет доступна.

Теперь, когда вы получили общее представление о JMS и асин- хронной передаче сообщений, попробуем настроить брокер сообще- ний JMS, который будет использоваться в наших примерах. Вы можете использовать любой брокер сообщений JMS, но здесь будет использоваться наиболее популярный брокер ActiveMQ.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии