Olá pessoal.
Antes de mais nada, já adianto que procurei por palavras chave tanto neste fórum quanto no google e não encontrei nada
muito animador em termos de tutoriais, exemplos, e documentação. A documentação do próprio site do activeMQ não me ajudou o suficiente.
Caso não puderem me ajudar diretamente com minha dúvida, por favor, caso puderem informar links, livros pois qualquer ajuda será válida.
Bom, estou tentando desenvolver uma aplicação simpes com um Sender e um Receiver
com activeMQ tudo na mesma máquina e com configuração padrão. (não alterei nada no activemq.xml do diretório conf).
Estou testando um exemplo que peguei na internet. Abaixo o código do Receiver
package testesmq;
import org.apache.activemq.*;
import org.apache.activemq.broker.BrokerService;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
/**
* Hello world!
*/
public class Receiver {
private static String host = "192.168.8.91";
private static String port = "61616";
private static String queue_name = "SERVER.TEST";
public static void main(String[] args) throws Exception {
thread(new StartBroker(), true);
while(true){
thread(new StartConsumer(), false);
Thread.sleep(5000);
}
}
public static void thread(Runnable runnable, boolean daemon) {
Thread brokerThread = new Thread(runnable);
brokerThread.setDaemon(daemon);
brokerThread.start();
}
public static class StartBroker implements Runnable {
public StartBroker() {
}
public void run() {
try{
BrokerService broker = new BrokerService();
// configure the broker
broker.addConnector("tcp://"+host+":"+port+"");
broker.start();
}catch(Exception e){
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
}
public static class StartConsumer implements Runnable, ExceptionListener {
public void run() {
try {
// Create a ConnectionFactory
ActiveMQConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("tcp://"+host+":"+port+"");
// Create a Connection
Connection connection = connectionFactory.createConnection();
connection.start();
connection.setExceptionListener(this);
// Create a Session
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
// Create the destination (Topic or Queue)
Destination destination =
session.createQueue(queue_name);
// Create a MessageConsumer from the Session to the Topic or Queue
MessageConsumer consumer =
session.createConsumer(destination);
// Wait for a message
Message message = consumer.receive(1000);
onMessage(message);
consumer.close();
session.close();
connection.close();
} catch (Exception e) {
System.out.println("Caught: " + e);
e.printStackTrace();
}
}
public void onMessage(javax.jms.Message jmsMessage) {
try {
if (jmsMessage instanceof TextMessage) {
TextMessage textMessage = (TextMessage)
jmsMessage;
String text = textMessage.getText();
System.out.println("Received: -" + text);
if(text.contains("address")){
System.out.println(">>> Sending...");
BkgProcess bp = new BkgProcess(text.substring(8));
bp.StartBkgProcess();
}
}
} catch(javax.jms.JMSException ex) {
ex.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized void onException(JMSException ex) {
System.out.println("JMS Exception occured. Shutting down client.");
}
}
}
e qdo executo o Receiver que será um listener, recebo o seguinte erro:
Caught: java.io.IOException: Failed to bind to server socket: tcp://192.168.8.91:61616 due to: java.net.BindException: Address already in use
java.io.IOException: Failed to bind to server socket: tcp://192.168.8.91:61616 due to: java.net.BindException: Address already in use
at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:33)
at org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:108)
at org.apache.activemq.transport.tcp.TcpTransportFactory.doBind(TcpTransportFactory.java:56)
at org.apache.activemq.transport.TransportFactory.bind(TransportFactory.java:106)
at org.apache.activemq.broker.BrokerService.createTransportConnector(BrokerService.java:1544)
at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:187)
at org.apache.activemq.broker.BrokerService.addConnector(BrokerService.java:177)
at testesmq.Receiver$StartBroker.run(Receiver.java:45)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
at java.net.ServerSocket.bind(ServerSocket.java:319)
at java.net.ServerSocket.<init>(ServerSocket.java:185)
at javax.net.DefaultServerSocketFactory.createServerSocket(ServerSocketFactory.java:169)
at org.apache.activemq.transport.tcp.TcpTransportServer.bind(TcpTransportServer.java:104)
... 7 more
Obrigado a todos.
[]'s