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

com.alibaba.csp.ahas.sentinel.gateway.zuul.SentinelZuulGatewayAutoConfiguration Maven / Gradle / Ivy

There is a newer version: 1.6.8-safe-jdk8
Show newest version
/*
 * Copyright 1999-2019 Alibaba Group Holding Ltd.
 *
 * 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
 *
 *      https://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.
 */
package com.alibaba.csp.ahas.sentinel.gateway.zuul;

import com.alibaba.csp.ahas.sentinel.AhasSentinelConstants;
import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulErrorFilter;
import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPostFilter;
import com.alibaba.csp.sentinel.adapter.gateway.zuul.filters.SentinelZuulPreFilter;
import com.alibaba.csp.sentinel.config.SentinelConfig;

import com.netflix.zuul.ZuulFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Eric Zhao
 */
@Configuration
@ConditionalOnProperty(name = "spring.cloud.ahas.sentinel.enabled", matchIfMissing = true)
@EnableConfigurationProperties(SentinelZuulGatewayProperties.class)
public class SentinelZuulGatewayAutoConfiguration {

    private static final Logger LOGGER = LoggerFactory.getLogger(SentinelZuulGatewayAutoConfiguration.class);

    private final SentinelZuulGatewayProperties gatewayProperties;

    public SentinelZuulGatewayAutoConfiguration(SentinelZuulGatewayProperties gatewayProperties) {
        this.gatewayProperties = gatewayProperties;

        // The pre-init process should be executed before other @PostConstruct.
        doInit();
    }

    @Bean
    public ZuulFilter sentinelZuulPreFilter() {
        return new SentinelZuulPreFilter(10000);
    }

    @Bean
    public ZuulFilter sentinelZuulPostFilter() {
        return new SentinelZuulPostFilter(1000);
    }

    @Bean
    public ZuulFilter sentinelZuulErrorFilter() {
        return new SentinelZuulErrorFilter(-1);
    }

    private void doInit() {
        int appType = AhasSentinelConstants.GATEWAY_TYPE_ZUUL1;
        LOGGER.info("Setting Sentinel AppType to GATEWAY_TYPE_ZUUL1: " + appType);
        System.setProperty(SentinelConfig.APP_TYPE_PROP_KEY, String.valueOf(appType));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy