Pergunta

Eu configurar uma fila, configurando-o em activemq.xml (ActiveMQ versão 5.2.0), conforme descrito na documentação .

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

Eu estou tentando acessá-lo de java (no mesmo host) com o seguinte código:

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);

Estou receveing ??o seguinte erro, embora a fila é visível no jconsole (árvore / org.apache.activemq / Fila):

javax.naming.NameNotFoundException: DUMMY

Por favor me diga o que eu estou fazendo errado. Muito, muito obrigado!

Foi útil?

Solução

Em primeiro lugar você não tem que criar explicitamente qualquer filas em o corretor que não faz mal.

Não

Além disso, os destinos disponíveis no corretor são auto-magicamente mapeados em um contexto JNDI para você usar algum tipo de nome JNDI.

Você pode fazer isso explicitamente como descrito aqui . Se você quiser população auto-mágico de JNDI em seguida, usar a convenção JNDI nomeação de dynamicQueues / MANEQUIM como o nome JNDI que você pesquisa (conforme descrito na dinamicamente criando destinos )

Outras dicas

Hmm .. bem quando eu quero ouvir uma fila que eu costumo fazer algo parecido com isso. (As importações provenientes javax.jms)

Queue fila;

    // 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();

E certifique-se de que seus instrumentos Handler MessageListener.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top