Package com.taobao.metamorphosis.metaslave

Source Code of com.taobao.metamorphosis.metaslave.MetamorphosisSlaveBroker

/*
* (C) 2007-2012 Alibaba Group Holding Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* Authors:
*   wuhua <wq163@163.com>
*/
package com.taobao.metamorphosis.metaslave;

import java.util.Properties;

import org.apache.commons.lang.StringUtils;

import com.taobao.metamorphosis.AbstractBrokerPlugin;
import com.taobao.metamorphosis.exception.MetaClientException;
import com.taobao.metamorphosis.server.assembly.MetaMorphosisBroker;
import com.taobao.metamorphosis.server.utils.SlaveConfig;


/**
* ����һ����meta masterͬ����Ϣ���ݵ�slaver
*
* @author �޻�
* @since 2011-6-23 ����01:54:11
*/

public class MetamorphosisSlaveBroker extends AbstractBrokerPlugin {

    private SubscribeHandler subscribeHandler;


    @Override
    public void init(final MetaMorphosisBroker metaMorphosisBroker, final Properties props) {
        this.broker = metaMorphosisBroker;
        this.props = props;

        this.putSlaveProperties(this.broker, this.props);

        if (!this.broker.getMetaConfig().isSlave()) {
            throw new SubscribeMasterMessageException("Could not start as a slave broker");
        }

        try {
            this.subscribeHandler = new SubscribeHandler(this.broker);
        }
        catch (final MetaClientException e) {
            throw new SubscribeMasterMessageException("Create subscribeHandler failed", e);
        }
    }


    private void putSlaveProperties(final MetaMorphosisBroker broker, final Properties props) {
        SlaveConfig slaveConfig = new SlaveConfig();
        slaveConfig.setSlaveId(Integer.parseInt(props.getProperty("slaveId")));
        if (StringUtils.isNotBlank(props.getProperty("slaveGroup"))) {
            slaveConfig.setSlaveGroup(props.getProperty("slaveGroup"));
        }
        else {
            // set default slave group
            slaveConfig.setSlaveGroup(slaveConfig.getSlaveGroup() + "_" + slaveConfig.getSlaveId());
        }
        if (StringUtils.isNotBlank(props.getProperty("slaveMaxDelayInMills"))) {
            slaveConfig.setSlaveMaxDelayInMills(Integer.parseInt(props.getProperty("slaveMaxDelayInMills")));
        }
        if (StringUtils.isNotBlank(props.getProperty("autoSyncMasterConfig"))) {
            slaveConfig.setAutoSyncMasterConfig(Boolean.valueOf(props.getProperty("autoSyncMasterConfig")));
        }
        broker.getMetaConfig().setSlaveConfig(slaveConfig);

        // ��������BrokerIdPath���Ա�ע�ᵽslave��·��
        broker.getBrokerZooKeeper().resetBrokerIdPath();
    }


    @Override
    public String name() {
        return "metaslave";
    }


    @Override
    public void start() {
        this.subscribeHandler.start();
    }


    @Override
    public void stop() {
        this.subscribeHandler.shutdown();
    }
}
TOP

Related Classes of com.taobao.metamorphosis.metaslave.MetamorphosisSlaveBroker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.