I've set up a queue by configuring it in activemq.xml (ActiveMQ version 5.2.0) as described in the documentation.
<destinations>
<queue physicalName="FOO.BAR" />
<queue physicalName="DUMMY" />
</destinations>
I'm trying to access it from java (on the same host) with the following code:
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);
I'm receveing the following error, although the queue is visible in jconsole (Tree / org.apache.activemq / Queue):
javax.naming.NameNotFoundException: DUMMY
Please tell me what I'm doing wrong. Many, many thanks!
Firstly you don't have to explicitly create any queues in the broker though it does no harm.
Also the destinations available in the broker are not auto-magically mapped into a JNDI context for you using some kind of JNDI name.
You can do this explicitly as described here. If you want auto-magical population of JNDI then use the JNDI naming convention of dynamicQueues/DUMMY as the JNDI name you lookup (as described in the Dynamically creating destinations)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With