package org.jentrata.spa.jms.module; import hk.hku.cecid.piazza.commons.Sys; import hk.hku.cecid.piazza.commons.module.Component; import org.apache.activemq.broker.BrokerFactory; import org.apache.activemq.broker.BrokerService; import org.jentrata.spa.jms.JMSProcessor; /** * Creates an ActiveMQ Message Broker */ public class JMSBrokerComponent extends Component { private BrokerService brokerService; @Override protected void init() throws Exception { super.init(); Sys.main.log.debug("Starting JMS Broker:" + getBrokerUri()); brokerService = BrokerFactory.createBroker(getBrokerUri(),true); brokerService.setUseShutdownHook(false); Sys.main.log.info("Started JMS Broker"); } public BrokerService getBrokerService() { return brokerService; } public String getBrokerUri() { return getParameters().getProperty("brokerUri"); } public void shutdownBroker() { if(brokerService != null && brokerService.isStarted()) { try { Sys.main.log.info("Stopping JMS Broker:" + getBrokerUri()); brokerService.stop(); } catch (Exception e) { Sys.main.log.warn("unable to stop JMS Broker:" + e.getMessage()); Sys.main.log.debug("",e); } } else { Sys.main.log.warn("JMS Broker already stopped"); } } }