/** * ActiveMQ Client which can send and receive message from or to Queue * @author Ing Tatioti Mbogning Raoul(tatiotir@itkamer, tatiotir@gmail.com) * @version 1.0 * @poweredby IT Kamer LTD Cameroon. */ package com.openbravo.activemq; import java.io.Serializable; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; /** * * @author TATIOTI-IDEAPAD */ public class ActiveMQClient { private ConnectionFactory factory; private Connection connection; private Session session; private Boolean error = false; private String activemqBrokerUrl = ""; private String activemqUsername = ""; private String activemqPassword = ""; public Boolean error() { return error; } public ActiveMQClient(String activemqBrokerUrl, String activemqUsername, String activemqPassword) { this.activemqBrokerUrl = activemqBrokerUrl; this.activemqUsername = activemqUsername; this.activemqPassword = activemqPassword; } public boolean init() { try { factory = new ActiveMQConnectionFactory(activemqBrokerUrl); // Create a connection if (!activemqUsername.isEmpty() && !activemqPassword.isEmpty()) connection = factory.createConnection(activemqUsername, activemqPassword); else connection = factory.createConnection(); connection.start(); // Setup session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); return true; } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); } return false; } public void close() { try { connection.stop(); connection.close(); } catch (JMSException e) { } } public boolean sendMessage(String message, String queueName) { try { // Setup message destination directory Destination destination = session.createQueue(queueName); // Setup message sender MessageProducer sender = session.createProducer(destination); // Send the message TextMessage textMessage = session.createTextMessage(message); sender.send(textMessage); sender.close(); } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); return false; } return true; } public boolean sendMessage(Serializable messageObject, String queueName) { try { // Setup message destination directory Destination destination = session.createQueue(queueName); // Setup message sender MessageProducer sender = session.createProducer(destination); // Send the message ObjectMessage objectMessage = session.createObjectMessage(messageObject); sender.send(objectMessage); } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); return false; } return true; } public Message consumeMessage(String queueName) { try { Destination destination = session.createQueue(queueName); MessageConsumer consumer = session.createConsumer(destination); Message message = consumer.receive(1000); if (message != null) { consumer.close(); return message; } else { consumer.close(); return session.createTextMessage(""); } } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); return null; } } public ArrayList<Message> consumeAllMessages(String queueName) { try { Destination destination = session.createQueue(queueName); MessageConsumer consumer = session.createConsumer(destination); ArrayList<Message> messageList = new ArrayList<>(); Message message = consumer.receive(1000); while (message != null) { messageList.add(message); message = consumer.receive(1000); } consumer.close(); return messageList; } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); return null; } } public boolean eraseQueue(String queueName) { try { Destination destination = session.createQueue(queueName); MessageConsumer consumer = session.createConsumer(destination); Message message = consumer.receive(1000); while (message != null) { message = consumer.receive(1000); } return true; } catch (JMSException ex) { Logger.getLogger(ActiveMQClient.class.getName()).log(Level.SEVERE, null, ex); return false; } } }