Commit 8f3d0b68 authored by 王亮's avatar 王亮

add grace shutdown after 4s delay.

parent 4f138e89
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- <maven.test.skip>true</maven.test.skip>--> <!-- <maven.test.skip>true</maven.test.skip>-->
<maven.javadoc.skip>true</maven.javadoc.skip> <maven.javadoc.skip>true</maven.javadoc.skip>
<revision>2.6.3.10</revision> <revision>2.6.3.11</revision>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-source-plugin.version>3.2.1</maven-source-plugin.version> <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
<maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version> <maven-javadoc-plugin.version>3.3.1</maven-javadoc-plugin.version>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<packaging>pom</packaging> <packaging>pom</packaging>
<properties> <properties>
<revision>2.6.3.10</revision> <revision>2.6.3.11</revision>
<spring-boot.version>2.6.3</spring-boot.version> <spring-boot.version>2.6.3</spring-boot.version>
<spring-cloud.version>2021.0.1</spring-cloud.version> <spring-cloud.version>2021.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version> <spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version>
......
...@@ -6,6 +6,7 @@ import feign.Feign; ...@@ -6,6 +6,7 @@ import feign.Feign;
import feign.RequestInterceptor; import feign.RequestInterceptor;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
import org.springframework.boot.actuate.context.ShutdownEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
...@@ -28,23 +29,26 @@ public class DisCoveryAutoConfiguration { ...@@ -28,23 +29,26 @@ public class DisCoveryAutoConfiguration {
final NacosAutoServiceRegistration nacosAutoServiceRegistration; final NacosAutoServiceRegistration nacosAutoServiceRegistration;
public DisCoveryAutoConfiguration(NacosAutoServiceRegistration nacosAutoServiceRegistration) { final ShutdownEndpoint shutdownEndpoint;
public DisCoveryAutoConfiguration(NacosAutoServiceRegistration nacosAutoServiceRegistration,
ShutdownEndpoint shutdownEndpoint) {
this.nacosAutoServiceRegistration = nacosAutoServiceRegistration; this.nacosAutoServiceRegistration = nacosAutoServiceRegistration;
this.shutdownEndpoint = shutdownEndpoint;
} }
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@ConditionalOnAvailableEndpoint @ConditionalOnAvailableEndpoint
@DependsOn(value = {"xxlJobSpringExecutor"})
public ServiceDeployEndpoint serviceDeployEndpoint( public ServiceDeployEndpoint serviceDeployEndpoint(
NacosAutoServiceRegistration nacosAutoServiceRegistration) { NacosAutoServiceRegistration nacosAutoServiceRegistration) {
return new ServiceDeployEndpoint(nacosAutoServiceRegistration); return new ServiceDeployEndpoint(nacosAutoServiceRegistration, shutdownEndpoint);
} }
@LoadBalancerClients({ @LoadBalancerClients({
@LoadBalancerClient(value = "price-tracker", configuration = CustomLoadBalancerConfiguration.class), @LoadBalancerClient(value = "price-tracker", configuration = CustomLoadBalancerConfiguration.class),
@LoadBalancerClient(value = "sc-task", configuration = CustomLoadBalancerConfiguration.class), @LoadBalancerClient(value = "sc-task", configuration = CustomLoadBalancerConfiguration.class),
@LoadBalancerClient(value = "sc-auth", configuration = CustomLoadBalancerConfiguration.class)} @LoadBalancerClient(value = "sc-auth", configuration = CustomLoadBalancerConfiguration.class)})
)
public class FeignConfig { public class FeignConfig {
@LoadBalanced @LoadBalanced
...@@ -63,6 +67,7 @@ public class DisCoveryAutoConfiguration { ...@@ -63,6 +67,7 @@ public class DisCoveryAutoConfiguration {
public RequestLoggingFilter requestLoggingFilter() { public RequestLoggingFilter requestLoggingFilter() {
return new RequestLoggingFilter(); return new RequestLoggingFilter();
} }
@Bean @Bean
public CommonsRequestLoggingFilter logFilter(RequestLoggingFilter requestLoggingFilter) { public CommonsRequestLoggingFilter logFilter(RequestLoggingFilter requestLoggingFilter) {
requestLoggingFilter.setIncludeQueryString(true); requestLoggingFilter.setIncludeQueryString(true);
......
...@@ -2,26 +2,40 @@ package cn.quantgroup.boot; ...@@ -2,26 +2,40 @@ package cn.quantgroup.boot;
import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration;
import java.util.Timer;
import java.util.TimerTask;
import org.springframework.boot.actuate.context.ShutdownEndpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.WriteOperation; import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpoint; import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpoint;
@WebEndpoint(id = "serviceDeploy") @WebEndpoint(id = "serviceDeploy")
public class ServiceDeployEndpoint { public class ServiceDeployEndpoint {
final NacosAutoServiceRegistration nacosAutoServiceRegistration; final NacosAutoServiceRegistration nacosAutoServiceRegistration;
final ShutdownEndpoint shutdownEndpoint;
public ServiceDeployEndpoint(NacosAutoServiceRegistration nacosAutoServiceRegistration) { public ServiceDeployEndpoint(NacosAutoServiceRegistration nacosAutoServiceRegistration,
ShutdownEndpoint shutdownEndpoint) {
this.nacosAutoServiceRegistration = nacosAutoServiceRegistration; this.nacosAutoServiceRegistration = nacosAutoServiceRegistration;
this.shutdownEndpoint = shutdownEndpoint;
} }
@ReadOperation @ReadOperation
public String offLine() { public String offLine() {
nacosAutoServiceRegistration.stop(); nacosAutoServiceRegistration.stop();
new Timer().schedule(new TimerTask(
) {
@Override
public void run() {
shutdownEndpoint.shutdown();
}
}, 4000L);
return "ok"; return "ok";
} }
@WriteOperation @WriteOperation
public String onLine(){ public String onLine() {
nacosAutoServiceRegistration.start(); nacosAutoServiceRegistration.start();
return "ok"; return "ok";
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment