package org.srdbs.messenger; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.log4j.Logger; import javax.jms.*; import java.util.UUID; /** * Secure and Redundant Data Backup System. * User: Thilina Piyasundara * Date: 7/13/12 * Time: 8:34 PM * For more details visit : http://www.thilina.org */ public class Sender implements MessageListener { public static Logger logger = Logger.getLogger("systemsLog"); private static String brokerUrl; private String requestQueue = "requests"; Connection connection; private Session session; private MessageProducer producer; private MessageConsumer consumer; private Destination tempDest; public void start() throws JMSException { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination adminQueue = session.createQueue(requestQueue); producer = session.createProducer(adminQueue); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); tempDest = session.createTemporaryQueue(); consumer = session.createConsumer(tempDest); consumer.setMessageListener(this); } public void stop() throws JMSException { producer.close(); consumer.close(); session.close(); connection.close(); } public void request(String request) throws JMSException { logger.debug("Sending: " + request); TextMessage txtMessage = session.createTextMessage(); txtMessage.setText(request); txtMessage.setJMSReplyTo(tempDest); String correlationId = UUID.randomUUID().toString(); txtMessage.setJMSCorrelationID(correlationId); this.producer.send(txtMessage); } public void onMessage(Message message) { try { logger.debug("Received response : " + ((TextMessage) message).getText()); } catch (JMSException e) { logger.error("Error on received message : " + e); } } public static void sendMessage(String ip, int port, String message) throws Exception { brokerUrl = "tcp://" + ip + ":" + String.valueOf(port); Sender sender = new Sender(); sender.start(); sender.request(message); Thread.sleep(6000); //wait for replies sender.stop(); } }