使用Java SE在JMS中获取主题

时间:2015-05-19 14:39:46

标签: java jms jms-topic

我正在使用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查找来执行此操作,但由于我没有在容器中运行,因此我无法使用此服务。

1 个答案:

答案 0 :(得分:2)

你没有“检索”'一个话题。主题实例只是一条信息。如果要订阅主题(或队列),可以在客户端构造它的实例,如ActiveMQ hello world示例中所示:

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文档:http://docs.oracle.com/javaee/6/api/javax/jms/package-summary.html