1

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

4

1 回答 1

2

您不会“检索”主题。Topic 实例只是一条信息。如果你想订阅一个主题(或队列),你可以在你的客户端中构造它的一个实例,就像在 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

于 2015-05-19T15:19:27.583 回答