2015-05-19 2 views
1

Я использую Java SE. Я создаю тему, когда приложение первое начинается так:Получите тему в JMS, используя Java SE

connectionFactory = new ActiveMQConnectionFactory("vm://localhost"); 
conn = connectionFactory.createTopicConnection(); 
session = conn.createTopicSession(false, 
       TopicSession.AUTO_ACKNOWLEDGE); 
conn.start(); 
session.createTopic(name); 

Я смущен о том, как получить этот Topic в моих классах. Скажем, например, у меня есть класс, и он подключается к JMS службе, как и выше, с использованием:

connectionFactory = new ActiveMQConnectionFactory("vm://localhost"); 
conn = connectionFactory.createTopicConnection(); 
session = conn.createTopicSession(false, 
        TopicSession.AUTO_ACKNOWLEDGE); 
conn.start(); 

Как я могу затем получить ссылку на Topic я создал стартап приложения для отправки сообщений?

Я предположил бы, что-то вдоль линий:

session.getTopic(name); 

будет существовать, но я не могу найти что-нибудь на нем.

Я прочитал, как это сделать, используя Java EE с помощью поиска JNDI, но эта услуга недоступна для меня, так как я не запущен в контейнере.

ответ

2

Вы не «извлекаете» тему. Экземпляр темы - это всего лишь часть информации. Вы построить экземпляр этого в клиенте, если вы хотите подписаться на тему (или очереди), как это показано в ActiveMQ привет мир пример:

http://activemq.apache.org/hello-world.html

например:

// the name should of course be the same as it exists on the producer side 
Destination destination = session.createTopic("TEST.FOO"); 

// Create a MessageConsumer from the Session to the Topic or Queue 
MessageConsumer consumer = session.createConsumer(destination); 

Все это управляется стандартизованным и очень зрелым JMS API, поэтому вы должны обратиться к документации JEE. Любая книга JMS будет работать и на вас.

Дальнейшее чтение: https://docs.oracle.com/javaee/6/tutorial/doc/bncdr.html API Docs: http://docs.oracle.com/javaee/6/api/javax/jms/package-summary.html

Смежные вопросы