package com.yihu.hos.common; import com.yihu.hos.common.activeMq.ActiveMqConstants; import com.yihu.hos.common.activeMq.ActivemqConfiguration; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * @author HZY * @vsrsion 1.0 * Created at 2016/8/22. */ //@Component public class ActiveMqUtil { static ConnectionFactory connectionFactory; static Connection connection = null; static Session session; static Map sendQueues = new ConcurrentHashMap(); static Map getQueues = new ConcurrentHashMap(); static { ActivemqConfiguration configuration = new ActivemqConfiguration(); connectionFactory = new ActiveMQConnectionFactory( ActiveMqConstants.ACTIVE_MQ_USER, ActiveMqConstants.ACTIVE_MQ_PASS, ActiveMqConstants.ACTIVE_MQ_URI); try { connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(Boolean.FALSE.booleanValue(), 1); } catch (Exception e) { e.printStackTrace(); } } static MessageProducer getMessageProducer(String name) { if (sendQueues.containsKey(name)) return ((MessageProducer)sendQueues.get(name)); try { Destination destination = session.createQueue(name); MessageProducer producer = session.createProducer(destination); sendQueues.put(name, producer); return producer; } catch (JMSException e) { e.printStackTrace(); } return ((MessageProducer)sendQueues.get(name)); } static MessageConsumer getMessageConsumer(String name) { if (getQueues.containsKey(name)) return ((MessageConsumer)getQueues.get(name)); try { Destination destination = session.createQueue(name); MessageConsumer consumer = session.createConsumer(destination); getQueues.put(name, consumer); return consumer; } catch (JMSException e) { e.printStackTrace(); } return ((MessageConsumer)getQueues.get(name)); } public static void sendMessage(String queue, String text) { try { TextMessage message = session.createTextMessage(text); getMessageProducer(queue).send(message); // log.info("sendMessage " + queue + "\t\t" + text); } catch (JMSException e) { e.printStackTrace(); } } public static String getMessage(String queue) { try { TextMessage message = (TextMessage)getMessageConsumer(queue).receive(10000L); if (message != null) return message.getText(); } catch (JMSException e) { e.printStackTrace(); } return null; } public static void close() { try { session.close(); } catch (JMSException e) { e.printStackTrace(); } try { connection.close(); } catch (JMSException e) { e.printStackTrace(); } } }