Bom dia galera do Bem
Estou começando a implementar uma solução que irá buscar mensagens em um servidor externo, preciso usar uma conexão com o ActiveMQ usando JAVA, já revirei o google e no próprio site do Active atrás de algum material, mas até o momento não encontrei, tudo que encontrei sempre se refere ao localhost, precisaria de um tutorial ou projeto que faça esta conexão externa.
o que implementei foram 2 classes 1 é o Producer e outra o Consumer, localmente elas funcionam perfeitamente, 1 cria a fila e a outra consome.
Se alguém tiver alguma coisa e possa me dar uma ajuda, desde já ficarei muito grato!
Att. Diego Silva
Para conectar externo você tem que fornecer o IP, simplesmente isso.
Já fiz um monte de testes, não consigo conectar!
estou postando a minha classe abaixo, foi copiada do Site ActiveMQ
import javax.jms.*;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Consumer {
private static String url = ActiveMQConnection.DEFAULT_BROKER_URL;
private static String subject = "Monisat";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start();
// Cria sessão para enviar a mensagem
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(subject);
MessageConsumer consumer = session.createConsumer(destination);
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Recebido: " + textMessage.getText());
}
connection.close();
}
}
Se puder me dizer onde eu coloco o endereço, usuário e senha, agradeço o amigo.
Att.
Diego Silva
1)-
Assumindo que você já conseguiu subir o ActiveMQ. Para ter certeza, você consegue acessar o console http://0.0.0.0:8161/ ?
Através do console crie uma fila para testes: http://0.0.0.0:8161/admin/queues.jsp
- No seu projeto, crie um arquivo jndi.properties, como o seguinte conteúdo:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://localhost:61616
queue.teste = teste
Seu código para criar o ConnectionFactory é algo como:
InitialContext context = new InitialContext();
ConnectionFactory cf = (ConnectionFactory) context.lookup(“ConnectionFactory”);
ActiveMQConnection.DEFAULT_BROKER_URL
o valor padrão é:
tcp://localhost:61616
Então é só vc alterar para
private static String url = “tcp://ipdoservidor:61616”;
Sim eu consegui subir, deste exemplo que postei existe a classe Producer.java que grava a fila e com o Consumer eu consigo consumir, agora eu tenho que acessar um endereço externo.
Bom dia, está me retornando a seguinte Exception:
Exception in thread "main" javax.jms.JMSException: Network connections can't use topics!
O que pode ser, procurei no Google, mas não encontrei.
Como foi que vc colocou a url?
tcp://integracao-cargo.positronrt.com.br:62616
Como não sei a estrutura ai.
Na rede interna a comunicação funciona?
Tem firewall? Já desabilitou para testar?