Created
October 8, 2014 09:31
-
-
Save rajdavies/117345f5cc557e263cb9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package org.apache.activemq.broker; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import org.apache.activemq.broker.jmx.ManagementContext; | |
import org.apache.activemq.leveldb.LevelDBStoreFactory; | |
import org.apache.activemq.plugin.StatisticsBrokerPlugin; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import javax.management.MBeanServer; | |
import java.lang.management.ManagementFactory; | |
import java.security.AccessController; | |
import java.security.PrivilegedAction; | |
import java.util.ArrayList; | |
import java.util.List; | |
public class Main { | |
private static final Logger LOG = LoggerFactory.getLogger(Main.class); | |
private static String brokerName; | |
private static String dataDirectory; | |
private static int port; | |
static{ | |
try { | |
brokerName = AccessController.doPrivileged(new PrivilegedAction<String>() { | |
@Override | |
public String run() { | |
String result = System.getProperty("org.apache.activemq.AMQ_BROKER_NAME"); | |
result = (result == null || result.isEmpty()) ? System.getProperty("AMQ_BROKER_NAME", "AMQ_Broker") : result; | |
return result; | |
} | |
}); | |
String portStr = AccessController.doPrivileged(new PrivilegedAction<String>() { | |
@Override | |
public String run() { | |
String result = System.getProperty("org.apache.activemq.AMQ_PORT"); | |
result = (result==null||result.isEmpty()) ? System.getProperty("AMQ_PORT","61616") : result; | |
return result; | |
} | |
}); | |
port = Integer.getInteger(portStr); | |
dataDirectory = AccessController.doPrivileged(new PrivilegedAction<String>() { | |
@Override | |
public String run() { | |
String result = System.getProperty("org.apache.activemq.AMQ_DATA_DIRECTORYE"); | |
result = (result == null || result.isEmpty()) ? System.getProperty("AMQ_DATA_DIRECTORY", "data") : result; | |
return result; | |
} | |
}); | |
}catch(Throwable e){ | |
LOG.debug("Failed to look up System properties for host and port",e); | |
} | |
} | |
public static void main(String args[]) { | |
try { | |
BrokerService brokerService = new BrokerService(); | |
brokerService.setBrokerName(brokerName)); | |
brokerService.setDataDirectory(dataDirectory); | |
//we create our own ManagementContext - so ActiveMQ doesn't create a needless JMX Connector | |
MBeanServer server = ManagementFactory.getPlatformMBeanServer(); | |
ManagementContext managementContext = new ManagementContext(server); | |
managementContext.setCreateConnector(false); | |
brokerService.setManagementContext(managementContext); | |
List<BrokerPlugin> list = new ArrayList<>(); | |
list.add(new StatisticsBrokerPlugin()); | |
//ToDo - uncomment this when we move to ActiveMQ 5.11 | |
//list.add(new CamelRoutesBrokerPlugin()); | |
BrokerPlugin[] plugins = new BrokerPlugin[list.size()]; | |
list.toArray(plugins); | |
brokerService.setPlugins(plugins); | |
LevelDBStoreFactory persistenceFactory = new LevelDBStoreFactory(); | |
persistenceFactory.setDirectory(new File(getDataDirectory())); | |
persistenceFactory.setSync(false); | |
brokerService.setPersistenceFactory(persistenceFactory); | |
//set max available memory to the broker | |
long maxMemory = Runtime.getRuntime().maxMemory(); | |
long brokerMemory = (long) (maxMemory * 0.7); | |
brokerService.getSystemUsage().getMemoryUsage().setLimit(brokerMemory); | |
brokerService.addConnector("tcp://localhost:" + port); | |
brokerService.start(); | |
} catch (Throwable e) { | |
LOG.error("Failed to Start Fabric8MQ",e); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment