Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vstup.docx
Скачиваний:
47
Добавлен:
28.09.2019
Размер:
6.42 Mб
Скачать

Свойства (properties) сообщений

В дополнение в полям заголовков интерфейс Massage содержит возможности определять свойства. По сути это механизм добавление опциональных полей к заголовку. Свойства позволяют клиенту отбирать сообщения с помощью селектора (message selector) по определенным критериям.

Имена свойств должны соответствовать правилам для их идентификации селектором. См. подробности в разделе 3.8.

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

Испольщование свойств

Свойства устанавливаются перед отправкой сообщения. При получении сообщения они доступны лишь в read-only режиме, при попытке изменить свойство будет выброшен MessageNotWriteableException. Значения свойств могут дублировать какую-то информацию из тела сообещния. В общем JMS не определяет политику: для чего могут служить свойства, а для чего не могут, но стоит отметить, что передавать данные в теле сообщения более рационально, чем в свойствах. Для лучшей производительности свойства следует использовать лишь для расширения заголовка сообщения, в первую очередь для отбора сообщений селектором. Подробнее см. в разделе 3.8.

Соглашение о значениях свойств

Значения выставленные как указано в строках, можно прочитать как указано в столбцах. При не совпадении типов будет выброшен MessageFormatException либо NumberFormatException. Таблица 3-2.

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

Объекты в качестве значений свойств

Дополнительно JMS предоставляет методы setObjectProperty/getObjectProperty. Эти методы поддерживают набор wrapper-классов для соответствующих примитивных типов: Boolean, Byte, Short, Integer, Long, Float, Double and String

Итерация свойств

Очередность свойств никак не определена. Чтобы пробежать по всем свойствам необходимо использовать метод getPropertyNames, чтобы получить множество имен свойств. Этот метод не возвращает имена стандартных свойств JMS.

Очистка значений свойств

Свойства удаляются с помощью метода clearProperties.

Несуществующие свойства

get-метод вернет null, если такое свойство не определено.

Определенные в JMS свойства

Для стандартных свойств используется префикс ‘JMSX’. Их полный список представлен в таблице 3-3. К сожалению, поддержка жтих свойств является опциональной.

Таблица 3-3 Определенные в JMS свойства

Имя

Тип

Кто устанавливает

Коментарий

JMSXUserID

String

Provider on Send

Идентификатор пользователя (user), отославшего сообщение

JMSXAppID

String

Provider on Send

Идентификатор приложения, отославшего сообщение

JMSXDeliveryCount

int

Provider on Receive

Количество попыток доставки сообщения; 1,2...

JMSXGroupID

String

Client

Идетификатор группы сообщений, к которой сообщение относится

JMSXGroupSeq

int

Client

Номер сообщения внутри группы. 1,2...

JMSXProducerTXID

String

Provider on Send

Идентификатор транзакции, внутри которой было создано сообщение

JMSXConsumerTXID

String

Provider on Receive

Идентификатор транзакции, внутри которой сообщение было получено (consumed)

JMSXRcvTimestamp

long

Provider on Receive

Время доставки сообщения

JMSXState

int

Provider

Предполагается, что существует хранилище сообщений, в котором хранятся копии отосланных сообщений. Эти копии существуют с момента отсылки оригинала сообщения. Состояние каждой копии может быть: 1(waiting), 2(ready), 3(expired) or 4(retained). Это состояние не интересто производителю и получателю сообщения, оно хранится только в хранилище, JMS не определяет API доступа к этому хранилищу.

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

Специфичные для провайдера свойства

В JMS зарезервированы префиксы вида ‘JMS_’ для свойств, определяемых провайдером.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]