我试图将消息发布到activemq。但我在我的java应用程序中得到一个命名异常。这是代码如下
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
props.setProperty(Context.PROVIDER_URL,"tcp://localhost:61616");
InitialContext ctx = new InitialContext(props);
// get the initial context
// InitialContext ctx = new InitialContext();
QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
// create a queue connection
QueueConnection queueConn = connFactory.createQueueConnection();
// lookup the queue object
Queue queue = (Queue) ctx.lookup("nixon");
我得到三个警告加上一个像这样的错误
Exception in thread "main" javax.naming.NameNotFoundException: nixon
at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:235)
at javax.naming.InitialContext.lookup(Unknown Source)
at com.youtube.rest2.status.ProducerNewClient.main(ProducerNewClient.java:38)
任何人都可以告诉我为什么会收到这个错误..?
答案 0 :(得分:4)
您很可能会收到此错误,因为您尚未在JNDI配置文件中配置目标。您可以将这些定义添加到文件中,也可以使用ActiveMQ的动态目标功能。
对于使用基于JNDI的程序进行最简单的配置,有两个动态上下文如下
dynamicQueues
dynamicTopics
允许您在没有任何配置的情况下使用JNDI查找队列和主题。
e.g。如果您使用以下名称查找JNDI dynamicQueues / FOO.BAR
您将获得名为“FOO.BAR”的ActiveMQQueue。
阅读ActiveMQ网站上的JNDI Documentation了解更多信息。