javax.jms
Сообщение интерфейса

Все Известные Подынтерфейсы:
BytesMessage, MapMessage, ObjectMessage, StreamMessage, TextMessage

public interface Message

Message интерфейс является корневым интерфейсом всех сообщений JMS. Это определяет заголовок сообщения и acknowledge метод используется для всех сообщений.

Наиболее ориентированное на сообщение промежуточное программное обеспечение (МАМА), продукты обрабатывают сообщения как легкие объекты, которые состоят из заголовка и полезной нагрузки. Заголовок содержит поля, используемые для маршрутизации сообщения и идентификации; полезная нагрузка содержит отправляемые данные приложения.

В пределах этой общей формы определение сообщения изменяется значительно через продукты. Для API JMS было бы довольно трудно поддерживать все эти модели сообщения.

С этим в памяти, у модели сообщения JMS есть следующие цели:

Сообщения JMS составляются из следующих частей:

Тексты сообщений

API JMS определяет пять типов текста сообщения:

Заголовки сообщения

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

JMSCorrelationID может содержать специфичный для провайдера ID сообщения, специализированное String объект, или собственное провайдером byte[] значение.

Свойства сообщения

A Message объект содержит встроенное средство для того, чтобы поддерживать определенные с помощью приложения значения свойств. В действительности это обеспечивает механизм для того, чтобы он добавил специализированные поля заголовка к сообщению.

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

Имена свойства должны повиноваться правилам для идентификатора селектора сообщения. Имена свойства не должны быть нулем, и не должны быть пустыми строками. Если имя свойства определяется, и это - или нуль или пустая строка, IllegalArgumentException должен быть брошен.

Значения свойств могут быть boolean, byte, short, int, long, float, double, и String.

Значения свойств устанавливаются до отправки сообщения. Когда клиент получает сообщение, его свойства находятся в режиме только для чтения. Если клиент пытается установить свойства в этой точке, a MessageNotWriteableException бросается. Если clearProperties вызывается, свойства могут теперь быть и считаны из и записаны. Отметьте, что поля заголовка отличны от свойств. Поля заголовка никогда не находятся в режиме только для чтения.

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

Свойства сообщения поддерживают следующую таблицу преобразования. Отмеченные случаи должны поддерживаться. Неотмеченные случаи должны бросить a JMSException. String- к-примитивному преобразования могут бросить исключение на этапе выполнения если примитив valueOf метод не принимает String как допустимое представление примитива.

Значение, записанное как тип строки, может быть считано как тип столбца.

 |        | boolean byte short int long float double String 
 |----------------------------------------------------------
 |boolean |    X                                       X
 |byte    |          X     X    X   X                  X 
 |short   |                X    X   X                  X 
 |int     |                     X   X                  X 
 |long    |                         X                  X 
 |float   |                               X     X      X 
 |double  |                                     X      X 
 |String  |    X     X     X    X   X     X     X      X 
 |----------------------------------------------------------
 

В дополнение к специфичному для типа устанавливал/получал методы для свойств, JMS обеспечивает setObjectProperty и getObjectProperty методы. Они поддерживают тот же самый набор типов свойства, используя воплощенные примитивные значения. Их цель состоит в том, чтобы позволить решение о типе свойства к сделанному во время выполнения, а не во время компиляции. Они поддерживают те же самые преобразования значения свойства.

setObjectProperty метод принимает значения class Boolean, Byte, Short, Integer, Long, Float, Double, и String. Попытка использовать любой другой class должна бросить a JMSException.

getObjectProperty метод только возвращает значения class Boolean, Byte, Short, Integer, Long, Float, Double, и String.

Порядок значений свойств не определяется. Чтобы выполнить итерации через значения свойств сообщения, использовать getPropertyNames чтобы получить перечисление имени свойства и затем использовать различное свойство заставляют методы получать свои значения.

Свойства сообщения удаляются clearProperties метод. Это листы сообщение с пустым множеством свойств.

Получение значения свойства для имени, которое не было определено, возвращает нулевое значение. Только getStringProperty и getObjectProperty методы могут возвратить нулевое значение. Пытаясь считать нулевое значение, поскольку тип примитива должен быть обработан как вызов соответствия примитива valueOf(String) метод преобразования с нулевым значением.

API JMS резервирует JMSX имя свойства снабжает префиксом для JMS определенные свойства. Полный комплект этих свойств определяется в спецификации Службы сообщения Java. Новый JMS определенные свойства может быть добавлен в более поздних версиях API JMS. Поддержка этих свойств является дополнительной. String[] ConnectionMetaData.getJMSXPropertyNames метод возвращает имена свойств JMSX, поддерживаемых соединением.

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

Свойства JMSX, определенные в спецификации как "установлено провайдером на, передаются", доступны и производителю и потребителям сообщения. Свойства JMSX, определенные в спецификации как "установлено провайдером на, получают", доступны только потребителям.

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

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

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

Реализации провайдера JMS передают Интерфейсы

API JMS обеспечивает ряд интерфейсов сообщения, которые определяют модель сообщения JMS. Это не обеспечивает реализации этих интерфейсов.

Каждый провайдер JMS предоставляет ряд фабрик сообщения Session объект для того, чтобы создать экземпляры сообщений. Это позволяет провайдеру использовать реализации сообщения, адаптированные в соответствии с его определенными потребностями.

Провайдер должен быть подготовлен принять реализации сообщения, которые не являются его собственным. Они не могут быть обработаны так эффективно как его собственная реализация; однако, они должны быть обработаны.

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

Селекторы сообщения

JMS обменивается сообщениями, селектор позволяет клиенту определять полевыми ссылками заголовка и ссылками свойства, сообщения, которыми это интересуется. Только сообщения, заголовок которых и значения свойств соответствуют селектор, передаются. То, что это означает для сообщения не быть поставленным, зависит от MessageConsumer быть используемым (см. QueueReceiver и TopicSubscriber).

Селекторы сообщения не могут сослаться на значения текста сообщения.

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

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

Порядок оценки селектора сообщения слева направо в пределах уровня приоритета. Круглые скобки могут использоваться, чтобы изменить этот порядок.

Предопределенные селекторные литералы и имена оператора показывают здесь в верхнем регистре; однако, они являются нечувствительными к регистру.

Селектор может содержать: