/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.wordpress.salaboy.messaging; import java.io.Serializable; import java.util.HashMap; import java.util.Map; import org.hornetq.api.core.HornetQException; import org.hornetq.api.core.SimpleString; import org.hornetq.api.core.TransportConfiguration; import org.hornetq.api.core.client.ClientSession; import org.hornetq.api.core.client.ClientSession.QueueQuery; import org.hornetq.api.core.client.ClientSessionFactory; import org.hornetq.api.core.client.HornetQClient; import org.hornetq.api.core.client.ServerLocator; import org.hornetq.core.remoting.impl.netty.TransportConstants; /** * * @author salaboy */ public class MessageFactory { private static ServerLocator serverLocator; public final static String ADDR_NAME = "BIG_BAG"; public static MessageConsumer createMessageConsumer(String consumerId){ createOnDemandQueue(consumerId); return new MessageConsumer(consumerId, createFactory()); } public static MessageProducer createMessageProducer(){ createOnDemandQueue(ADDR_NAME); return new MessageProducer(ADDR_NAME, createFactory()); } public static void sendMessage(Serializable message) throws HornetQException{ createMessageProducer().sendMessageAndDie(message); } private static void createOnDemandQueue(String queueName){ try { ClientSessionFactory factory = createFactory(); ClientSession session = factory.createSession(true, true); QueueQuery queueQuery = session.queueQuery(new SimpleString(queueName)); if (!queueQuery.isExists()){ session.createQueue(ADDR_NAME, queueName); } session.close(); factory.close(); } catch (HornetQException ex) { throw new IllegalStateException("Error while creating '"+queueName+"' queue",ex); } } private static ClientSessionFactory createFactory(){ try { Map<String, Object> connectionParams = new HashMap<String, Object>(); connectionParams.put(TransportConstants.PORT_PROP_NAME, 8050); TransportConfiguration transportConfiguration = new TransportConfiguration( "org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", connectionParams); if (serverLocator == null) { serverLocator = HornetQClient .createServerLocatorWithoutHA(transportConfiguration); } ClientSessionFactory factory = serverLocator.createSessionFactory(); return factory; } catch (Exception e) { throw new IllegalStateException("Error while creating factory", e); } } public void dispose() { serverLocator.close(); } }