All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gu.simplemq.BaseMessageQueueFactory Maven / Gradle / Ivy

There is a newer version: 2.3.17
Show newest version
package gu.simplemq;

import java.io.IOException;
import java.util.Collections;
import java.util.Map;

import com.google.common.collect.Maps;
import com.google.common.net.HostAndPort;

import gu.simplemq.IMQConnParameterSupplier;
import gu.simplemq.IMessageQueueFactory;
import gu.simplemq.MessageQueueFactorys;
import gu.simplemq.pool.BaseMQPool;

import static com.google.common.base.Preconditions.*;

/**
 * {@link IMessageQueueFactory}实现基类
 * @author guyadong
 *
 */
@SuppressWarnings("rawtypes")
public abstract class BaseMessageQueueFactory

implements IMessageQueueFactory { /** * 原始的消息系统连接参数 */ protected Map mqConnParams = Collections.emptyMap(); private volatile HostAndPort hostAndPort; protected P pool; protected IAdvisor advisor = null; protected BaseMessageQueueFactory() { } /** * 执行工厂类初始化 * @param properties */ protected abstract void doInit(Map properties); /** * @return 返回消息系统服务器的主机名和端口 */ protected abstract HostAndPort doGetHostAndPort() ; @SuppressWarnings("unchecked") protected P getPool() { return (P) checkInitialized().pool; } @Override public boolean initialized() { return pool != null; } @Override public BaseMessageQueueFactory init(Map properties) { // double check if(!initialized()){ synchronized (this) { if(!initialized()){ doInit(properties); } } } return this; } @Override public BaseMessageQueueFactory init(IMQConnParameterSupplier supplier) { return init(checkNotNull(supplier,"supplier is null").getMQConnParameters()); } @Override public BaseMessageQueueFactory init(String json) { return init(MessageQueueFactorys.asMQConnParam(json)); } @Override public BaseMessageQueueFactory checkInitialized(){ checkState(initialized(),"current instance is uninitizlied"); return this; } @Override public BaseMessageQueueFactory asDefaultFactory(){ MessageQueueFactorys.setDefaultFactory(this); return this; } @Override public HostAndPort getHostAndPort() { // double check if(hostAndPort == null){ synchronized(this){ if(hostAndPort == null){ hostAndPort = doGetHostAndPort(); } } } return hostAndPort; } @SuppressWarnings("unchecked") @Override public Map getMQConnParameters(){ return Maps.newHashMap(checkInitialized().mqConnParams); } @Override public BaseMessageQueueFactory setAdvisor(IAdvisor advisor){ this.advisor = advisor; return this; } public IAdvisor getAdvisor(){ return advisor; } @Override public synchronized void close() throws IOException { if(pool != null){ pool.close(); pool = null; } } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(getClass().getSimpleName() + " [implementation type="); builder.append(getImplType()); builder.append(",mqConnParams="); builder.append(mqConnParams); builder.append("]"); return builder.toString(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy