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