Как я могу получить существующую очередь JMS? - PullRequest
3 голосов
/ 23 января 2010

Я чувствую, что это, вероятно, довольно простой вопрос, но это мой первый набег в JMS, поэтому я немного неуверен.

Я пытаюсь записать в существующую очередь JMS (а затем прочитать из другой очереди), для которой я знаю имя очереди, хост, диспетчер очереди и канал. Как получить ссылку на эту очередь в виде объекта javax.jms.Destination?

Все примеры, которые я нашел, включают вызов javax.jms.Session.createQueue(String), но поскольку эта очередь уже существует, я не хочу создавать другую, верно? Или я неправильно понимаю, что происходит?

Если это имеет значение, я использую драйвер com.ibm.msg.client.jms.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 января 2010

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

0 голосов
/ 03 мая 2017

Чтобы добавить ответ Эриксона выше:

Это пример получения и просмотра очереди JMS: (с использованием javax.jms-api 2.x)

 // Set up the connection to the queue:
 Properties env = new Properties();
 env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
 env.put(Context.PROVIDER_URL, "http-remoting://<host>:<port>");
 Context namingContext = new InitialContext(env);
 ConnectionFactory connectionFactory = (ConnectionFactory) namingContext.lookup("jms/RemoteConnectionFactory");
 JMSContext context = connectionFactory.createContext("jms_user", "pwd");

 // Get the JMS Queue:
 Queue queue = (Queue) namingContext.lookup("jms/queue/exampleQueue");
 // Create the JMS Browser:
 QueueBrowser browser = context.createBrowser(queue);
 // Browse the messages:
 Enumeration<Message> e = browser.getEnumeration();
 while (e.hasMoreElements()) {
     Message message = (Message) e.nextElement();
     log.debug(message.getBody(String.class) + " with priority: " + message.getJMSPriority());
 }
...

Убедитесь, что вы используете следующие зависимости Maven:

<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
<dependency>
    <groupId>org.wildfly</groupId>
    <artifactId>wildfly-jms-client-bom</artifactId>
    <version>10.0.0.Final</version>
    <type>pom</type>
</dependency>
...