JMS CreateQueue Вопрос - PullRequest
       12

JMS CreateQueue Вопрос

3 голосов
/ 21 сентября 2009

У меня есть общий вопрос о методе JMS createQueue. В WebSphere MQ этот метод используется в качестве альтернативы поиску JNDI? Я думал, что смогу динамически создать очередь. Это возможно? Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 сентября 2009

Предполагая, что вы имеете в виду QueueSession.createQueue, это очень вводящий в заблуждение метод, и он не делает то, что вы думаете:

Создает идентификатор очереди, заданной очереди имя.

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

Обратите внимание, что этот метод не для создание физической очереди. физическое создание очередей является административная задача и не должно быть инициированный JMS API. Тот самый Исключением является создание временных очереди, которая достигается с Метод createTeditionalQueue.

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

1 голос
/ 13 февраля 2014

Да согласно спецификации и правильно указано в ответе выше

Creates a queue identity given a Queue name.

This facility is provided for the rare cases where clients need to dynamically
manipulate queue identity. It allows the creation of a queue identity with a
provider-specific name. Clients that depend on this ability are not portable.

Note that this method is not for creating the physical queue.
The physical creation of queues is an administrative task and is not to be
initiated by the JMS API. The one exception is the creation of temporary queues,
which is accomplished with the createTemporaryQueue method.

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

Что касается метода createQueue() Session, он вернет ссылку на очередь, если она уже создана Если не JMSException будет брошено.

Также отметим, что createTemporaryQueue() создает фактическую физическую очередь. Вам придется позвонить delete() для очистки связанных ресурсов.

...