Frage

Ich habe eine Warteschlange konfigurieren, in activemq.xml (ActiveMQ version 5.2.0), wie beschrieben in der Dokumentation.

<destinations>
    <queue physicalName="FOO.BAR" />
    <queue physicalName="DUMMY" />
</destinations>

Ich versuche, darauf zuzugreifen, die von java (auf dem gleichen host) mit dem folgenden 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);

Ich bin receveing die folgende Fehlermeldung, obwohl die Warteschlange ist sichtbar in jconsole (Baum / org.apache.activemq / Queue):

javax.naming.NameNotFoundException: DUMMY

Bitte sagen Sie mir, was ich falsch mache.Vielen, vielen Dank!

War es hilfreich?

Lösung

Erstens werden Sie nicht haben, um explizit erstellen Sie alle Warteschlangen in den Makler obwohl es nicht Schaden.

Auch die Destinationen in den Makler sind nicht auto-magisch abgebildet in einer JNDI-Kontext für Sie mit irgendeiner Art von JNDI-Namen.

Sie können dies tun, explizit wie hier beschrieben.Wenn Sie wollen auto-magischen Bevölkerung von JNDI dann verwenden Sie die JNDI naming convention von dynamicQueues/DUMMY als JNDI name die dich Suche (wie beschrieben in die Dynamische Erstellung von Zielen)

Andere Tipps

Hmm..gut, wenn ich hören will-Warteschlange normalerweise mache ich so etwas wie dieses.(Einfuhr von javax.jms -)

Warteschlange-queue;

    // Connect to ActiveMQ
    ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(messageBrokerURL);
    connection = factory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    // List to Dummy Queue
    queue = session.createQueue("DUMMY");
    messageConsumer = session.createConsumer(queue);
    messageConsumer.setMessageListener(queueHandler);

    // Start the connection
    connection.start();

Und stellen Sie sicher, dass Sie den Handler implementiert MessageListener.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top