Skip to content

Instantly share code, notes, and snippets.

@rajdavies
Created October 8, 2014 09:31
Show Gist options
  • Save rajdavies/117345f5cc557e263cb9 to your computer and use it in GitHub Desktop.
Save rajdavies/117345f5cc557e263cb9 to your computer and use it in GitHub Desktop.
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