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

com.netease.nim.camellia.delayqueue.server.springboot.CamelliaDelayQueueServerConfiguration Maven / Gradle / Ivy

The newest version!
package com.netease.nim.camellia.delayqueue.server.springboot;

import com.netease.nim.camellia.delayqueue.server.CamelliaDelayQueueServer;
import com.netease.nim.camellia.delayqueue.server.CamelliaDelayQueueServerConfig;
import com.netease.nim.camellia.redis.CamelliaRedisTemplate;
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({CamelliaDelayQueueServerProperties.class})
public class CamelliaDelayQueueServerConfiguration {

    @Autowired(required = false)
    private CamelliaRedisTemplate template;

    @Bean
    public CamelliaDelayQueueServer camelliaDelayQueueServer(CamelliaDelayQueueServerProperties properties) {
        CamelliaDelayQueueServerConfig serverConfig = new CamelliaDelayQueueServerConfig();
        serverConfig.setNamespace(properties.getNamespace());
        serverConfig.setAckTimeoutMillis(properties.getAckTimeoutMillis());
        serverConfig.setMaxRetry(properties.getMaxRetry());
        serverConfig.setCheckTimeoutThreadNum(properties.getCheckTimeoutThreadNum());
        serverConfig.setCheckTriggerThreadNum(properties.getCheckTriggerThreadNum());
        serverConfig.setMsgScheduleMillis(properties.getMsgScheduleMillis());
        serverConfig.setTopicScheduleSeconds(properties.getTopicScheduleSeconds());
        serverConfig.setTtlMillis(properties.getTtlMillis());
        serverConfig.setScheduleThreadNum(properties.getScheduleThreadNum());
        serverConfig.setEndLifeMsgExpireMillis(properties.getEndLifeMsgExpireMillis());
        serverConfig.setTopicActiveTagTimeoutMillis(properties.getTopicActiveTagTimeoutMillis());
        serverConfig.setMonitorIntervalSeconds(properties.getMonitorIntervalSeconds());
        if (template == null) {
            throw new IllegalArgumentException("redis template not found");
        }
        return new CamelliaDelayQueueServer(serverConfig, template);
    }

    @Bean
    public CamelliaDelayQueueLongPollingTaskExecutor camelliaDelayQueueLongPollingTaskExecutor(CamelliaDelayQueueServerProperties properties) {
        CamelliaDelayQueueServer server = camelliaDelayQueueServer(properties);
        return new CamelliaDelayQueueLongPollingTaskExecutor(server, properties.getLongPollingTaskQueueSize(),
                properties.getLongPollingScheduledThreadSize(), properties.getLongPollingScheduledQueueSize(),
                properties.getLongPollingMsgReadyCallbackThreadSize(), properties.getLongPollingMsgReadyCallbackQueueSize(),
                properties.getLongPollingTimeoutMillis());
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy