/** * $Id: MQClientManager.java 1831 2013-05-16 01:39:51Z shijia.wxr $ */ package com.alibaba.rocketmq.client.impl; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; import com.alibaba.rocketmq.client.MQClientConfig; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; /** * Client�������� * * @author vintage.wang@gmail.com shijia.wxr@taobao.com * */ public class MQClientManager { private static MQClientManager instance = new MQClientManager(); private AtomicInteger factoryIndexGenerator = new AtomicInteger(); private ConcurrentHashMap<MQClientConfig, MQClientFactory> factoryTable = new ConcurrentHashMap<MQClientConfig, MQClientFactory>(); private MQClientManager() { } public static MQClientManager getInstance() { return instance; } public MQClientFactory getAndCreateMQClientFactory(final MQClientConfig mQClientConfig) { MQClientFactory factory = this.factoryTable.get(mQClientConfig); if (null == factory) { factory = new MQClientFactory(mQClientConfig, this.factoryIndexGenerator.getAndIncrement()); MQClientFactory prev = this.factoryTable.putIfAbsent(mQClientConfig, factory); if (prev != null) { factory = prev; } else { // TODO log } } return factory; } }