Служба сообщения Java (JMS), который API обеспечивает распространенный способ для программ Java, чтобы создать, отправьте, получите и считайте обмен сообщениями предприятия сообщения системы.
Если провайдер JMS обнаруживает серьёзную проблему с a Connection объект, это сообщает Connection объект ExceptionListener, если Вы были зарегистрированы.
A ServerSessionPool объект является объектом, реализованным сервером приложений, чтобы обеспечить пул ServerSession объекты для того, чтобы обработать сообщения a ConnectionConsumer (дополнительный).
XAQueueSession предоставляет постоянному клиенту QueueSession, который может использоваться, чтобы создать QueueReceiver, QueueSender, и QueueBrowser (дополнительные) объекты.
Это исключение выдается, когда метод вызывается в недопустимое или несоответствующее время или если провайдер не находится в соответствующем состоянии для требуемой работы.
Это исключение должно быть выдано, когда клиент JMS пытается использовать тип данных, не поддерживаемый сообщением или попытками считать данные в сообщении как неправильный тип.
Это исключение должно быть выдано когда звонок Session.commit результаты в откате текущей транзакции.
Пакет javax.jms Описание
Служба сообщения Java (JMS), который API обеспечивает распространенный способ для программ Java, чтобы создать, отправьте, получите и считайте обмен сообщениями предприятия сообщения системы.
Приложения JMS
Приложение JMS составляется из следующих частей:
Провайдер JMS - система обмена сообщениями, которая реализует API JMS в дополнение к другой административной функциональности и функциональности управления, требуемой полнофункционального продукта обмена сообщениями
Клиенты JMS - программы языка Java, которые отправляют и получают сообщения
Сообщения - объекты, которые используются, чтобы передать информацию между клиентами приложения
Администрируемые Объекты - специфичные для провайдера объекты, которые клиенты ищут и используют, чтобы взаимодействовать портативно с провайдером JMS
Клиенты Non-JMS - клиенты, которые используют собственный клиентский API системы обмена сообщениями вместо API JMS. Если приложение, преследуемое доступность API JMS, вероятно, что это будет включать и клиенты JMS и non-JMS клиенты.
Администрирование
Провайдеры JMS отличаются значительно по их реализациям базовой технологии обмена сообщениями. Есть также существенные различия в том, как система провайдера JMS устанавливается и администрируема.
Для клиентов JMS, чтобы быть переносимыми, они должны быть изолированы от этих собственных аспектов провайдера. Это делается, определяя JMS администрируемые объекты, которые создаются и настраиваются администратором провайдера и позже используются клиентами. Клиент использует их через интерфейсы JMS, которые переносимы. Администратор создает их использующий специфичные для провайдера средства.
Есть два типа JMS администрируемые объекты:
ConnectionFactory - объект клиент использует, чтобы создать соединение с провайдером JMS
Место назначения - объект, который клиент использует, чтобы определить место назначения сообщений, которые он отправляет и источник сообщений, которые он получает
Администрируемые объекты помещаются в Именование Java и Каталог InterfaceTM (JNDI) пространство имен администратором. Клиент JMS обычно отмечает в его документации JMS администрируемые объекты, которых он требует и как имена JNDI этих объектов должны быть обеспечены для него.
Два Стиля Обмена сообщениями
Спецификация JMS определяет два стиля обмена сообщениями: "точка-точка" (PTP) или публиковать-и-подписываться (Pub/Sub). Эти стили могут быть объединены в единственном приложении, или данное приложение может использовать только один из этих стилей.
API JMS определяет эти два стиля, потому что они представляют два из доминирующих подходов к использующемуся в настоящее время обмену сообщениями. В то время как у доменов есть много общих черт, у них также есть некоторые различия. JMS обеспечивает объединенный интерфейс программирования, чтобы позволить клиентскому программисту легко отправлять и получать сообщение, используя любой домен, но клиентский программист должен также знать о различиях между доменами. Основные отличия касаются, как персистентность сообщения обрабатывается, и значение определенных атрибутов сообщения.
Интерфейсы JMS
Программируя клиент приложения, программист может или программировать использование зависящих от домена интерфейсов, или может использовать общие интерфейсы. Ключевые интерфейсы перечисляются в таблице ниже. Привилегированная модель должна использовать общие интерфейсы. Преимущество для использования общих интерфейсов состоит в том, что и и pub/sub задачи "точка-точка" могут быть объединены в одном сеансе, позволяя транзакции работать свыше обоих доменов.
В более ранних версиях JMS были отдельные иерархии class для pub/sub и моделей программирования "точка-точка", которые должны были использоваться. Эти иерархии class сохраняются, чтобы поддерживать обратную совместимость с более ранними версиями API JMS, но клиентские разработчики поощряются использовать общие интерфейсы.
Отношение PTP и интерфейсов Pub/Sub
Распространенный JMS
Домен PTP
Домен Pub/Sub
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
Соединение
QueueConnection
TopicConnection
Место назначения
Очередь
Тема
Сеанс
QueueSession
TopicSession
MessageProducer
QueueSender
TopicPublisher
MessageConsumer
QueueReceiver
TopicSubscriber
Следующее обеспечивает краткое определение этих понятий JMS. См. PTP и главы Pub/Sub спецификации JMS для получения дополнительной информации.
ConnectionFactory - администрируемый объект, используемый клиентом, чтобы создать Соединение
Соединение - активное соединение с провайдером JMS
Место назначения - администрируемый объект, который инкапсулирует идентификационные данные места назначения сообщения
Сеанс - однопоточный контекст для отправки и получения сообщений
MessageProducer - объект, создаваемый Сеансом, который используется для того, чтобы отправить сообщения месту назначения
MessageConsumer - объект, создаваемый Сеансом, который используется для того, чтобы получить сообщения, отправленные месту назначения
Термин использует, используется в этом документе, чтобы означать получение сообщения клиентом JMS; то есть, провайдер JMS получил сообщение и дал его его клиенту. Так как API JMS поддерживает и синхронное и асинхронное получение сообщений, термин используют, используется, когда нет никакой потребности сделать различие между ними.
Термин продукт используется как наиболее общий термин для того, чтобы отправить сообщение. Это означает давать сообщение провайдеру JMS для поставки месту назначения.
Разрабатывание Приложения JMS
Вообще говоря приложение JMS является одним или более клиентами JMS тот обмен сообщения. Приложение может также включить non-JMS клиенты; однако, эти клиенты используют встроенный API провайдера JMS вместо API JMS.
Приложение JMS может быть спроектировано и развернуто как модуль. Во многих случаях клиенты JMS добавляются с приращением к существующему приложению.
Определения сообщения, используемые приложением, могут произойти с JMS, или они, возможно, были определены non-JMS частью приложения.
Разработка Клиента JMS
Типичный клиент JMS выполняет следующую процедуру установки:
Используйте JNDI, чтобы найти объект ConnectionFactory
Используйте JNDI, чтобы найти один или более Целевых объектов
Используйте ConnectionFactory, чтобы создать Соединение JMS. В этой точке запрещается доставка сообщений
Используйте Соединение, чтобы создать один или более Сеансов JMS
Используйте Сеанс и Места назначения, чтобы создать MessageProducers и необходимый MessageConsumers
Запустите доставку сообщений для Соединения. Сообщения будут переданы к MessageConsumers
В этой точке у клиента есть основная установка, должен был произвести и использовать сообщения.