通过Java代码,启动ActiveMQ服务
package com.activemq.activemq4;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.jmx.ManagementContext;
import org.apache.activemq.store.kahadb.KahaDBStore;
import java.io.File;
/**
* 通过代码启动ActiveMQ服务
*/
public class RunMQServer {
public static void main(String[] args) throws Exception{
startServer();
}
/**
* 启动ActiveMQ服务
*
* @return
* @throws Exception
*/
public static BrokerService startServer() throws Exception {
//通过代码调用ActiveMQ相关的类,来构造并启动brokerService
BrokerService brokerService = new BrokerService();
//配置持久化
//持久化文件存储位置
File dataFileDir = new File("targer/amq-in-action/kahadb");
KahaDBStore kahaDBStore = new KahaDBStore();
kahaDBStore.setDirectory(dataFileDir);
kahaDBStore.setJournalMaxFileLength(1024 * 100);
kahaDBStore.setIndexWriteBatchSize(100);
kahaDBStore.setEnableIndexWriteAsync(true);
brokerService.setPersistenceAdapter(kahaDBStore);
brokerService.addConnector("tcp://localhost:61616");
brokerService.setUseJmx(true);
//以下是ManagementContext的配置,从这个容器中可以取得消息队列中为执行的消息数,消费者数,出队数等.
ManagementContext context = brokerService.getManagementContext();
context.setConnectorPort(2011);
context.setJmxDomainName("my-broker");
context.setConnectorPath("/jmxrmi");
brokerService.start();
System.in.read();
return brokerService;
}
}