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

com.netease.nim.camellia.id.gen.springboot.segment.CamelliaIdGenSegmentConfiguration Maven / Gradle / Ivy

The newest version!
package com.netease.nim.camellia.id.gen.springboot.segment;

import com.netease.nim.camellia.id.gen.common.IDLoader;
import com.netease.nim.camellia.id.gen.monitor.IdGenMonitor;
import com.netease.nim.camellia.id.gen.segment.CamelliaSegmentIdGen;
import com.netease.nim.camellia.id.gen.segment.CamelliaSegmentIdGenConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



/**
 * Created by caojiajun on 2021/9/27
 */
@Configuration
@EnableConfigurationProperties({CamelliaIdGenSegmentProperties.class})
public class CamelliaIdGenSegmentConfiguration {

    @Autowired(required = false)
    private IDLoader idLoader;

    @Bean
    public CamelliaSegmentIdGen camelliaSegmentIdGen(CamelliaIdGenSegmentProperties properties) {
        CamelliaSegmentIdGenConfig config = new CamelliaSegmentIdGenConfig();
        config.setRegionBits(properties.getRegionBits());
        config.setRegionId(properties.getRegionId());
        config.setRegionIdShiftingBits(properties.getRegionIdShiftingBits());
        config.setMaxRetry(properties.getMaxRetry());
        config.setRetryIntervalMillis(properties.getRetryIntervalMillis());
        config.setTagCount(properties.getTagCount());
        config.setStep(properties.getStep());
        config.setIdLoader(idLoader);
        IdGenMonitor.init(properties.getMonitorIntervalSeconds());
        return new CamelliaSegmentIdGen(config);
    }

    @Bean
    public IdSyncInMultiRegionService idSyncInMultiRegionService(CamelliaIdGenSegmentProperties properties) {
        return new IdSyncInMultiRegionService(idLoader, properties.getIdSyncInMultiRegionsConf());
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy