我按照文档中的描述通过在activemq.xml(ActiveMQ版本5.2.0)中配置它来设置队列.
我正在尝试使用以下代码从java(在同一主机上)访问它:
Hashtable properties = new Hashtable(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); properties.put(Context.PROVIDER_URL, "tcp://localhost:61616"); context = new InitialContext(properties); factory = (ConnectionFactory) context.lookup("ConnectionFactory"); connection = factory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); queueName = "DUMMY"; // which can be either FOO.BAR or DUMMY dest = (Destination) context.lookup(queueName);
我收到以下错误,虽然队列在jconsole中可见(Tree/org.apache.activemq/Queue):
javax.naming.NameNotFoundException: DUMMY
请告诉我我做错了什么.非常感谢!
首先,您不必在代理中显式创建任何队列,尽管它没有任何损害.
此外,代理中可用的目标不会使用某种JNDI名称自动神奇地映射到JNDI上下文中.
您可以按此处所述明确执行此操作.如果您想要自动神奇的JNDI填充,那么使用dynamicQueues/DUMMY的JNDI命名约定作为您查找的JNDI名称(如动态创建目标中所述)