ActiveMQ遵循jms协议,是Apache开源的消息中间件系统。源码还在研究中。
网上有很多相应的小Demo,在此不再赘述。先给出嵌入式启动broker的一种例子:
package com.z;
import java.io.File;
import java.net.URI;
import org.apache.activemq.broker.BrokerService;
import org.apache.activemq.broker.TransportConnector;
import org.apache.activemq.broker.region.policy.PolicyEntry;
import org.apache.activemq.broker.region.policy.PolicyMap;
import org.apache.activemq.broker.region.policy.StorePendingQueueMessageStoragePolicy;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter;
import org.apache.activemq.usage.MemoryUsage;
import org.apache.activemq.usage.StoreUsage;
import org.apache.activemq.usage.SystemUsage;
import org.apache.activemq.usage.TempUsage;
import org.apache.activemq.util.IOHelper;
public class AMQBroker {
public static void StartAMQBroker() {
try {
BrokerService broker = new BrokerService();
KahaDBPersistenceAdapter persidentAdaptor = new KahaDBPersistenceAdapter();
String root = System.getProperty("user.dir");
File file = null;
if (root.endsWith("bin")) {
file = new File("../cache");
} else {
file = new File("cache");
}
IOHelper.mkdirs(file);
persidentAdaptor.setDirectory(file);
PolicyMap policyMap = new PolicyMap();
PolicyEntry pe = new PolicyEntry();
pe.setOptimizedDispatch(true);
pe.setProducerFlowControl(false);
pe.setPrioritizedMessages(true);
pe.setQueuePrefetch(1);
pe.setUseCache(false);
pe.setProducerFlowControl(true);
pe.setMemoryLimit(1*1024*1024);
pe.setCursorMemoryHighWaterMark(85);
pe.setPendingQueuePolicy(new StorePendingQueueMessageStoragePolicy());
policyMap.put(new ActiveMQQueue(">"), pe);
SystemUsage sysUsage = new SystemUsage();
MemoryUsage memUsage = ne