nacos加入到项目当中

This commit is contained in:
dengqichen 2024-08-23 15:25:06 +08:00
parent face628e7c
commit cc813549f3
14 changed files with 54 additions and 49 deletions

View File

@ -2,4 +2,6 @@ server:
port: 0 port: 0
spring: spring:
application: application:
name: deploy-ease-tenant-adapter-${TENANT_CODE} name: deploy-ease-tenant-adapter-${TENANT_CODE}
autoconfigure:
exclude: org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

View File

@ -30,6 +30,8 @@ spring:
maxPoolPreparedStatementPerConnectionSize: 20 maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
autoconfigure:
exclude: org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
cloud: cloud:
config: config:
override-none: true override-none: true

View File

@ -32,10 +32,10 @@
<groupId>org.apache.httpcomponents.client5</groupId> <groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId> <artifactId>httpclient5</artifactId>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>com.alibaba.fastjson2</groupId> <!-- <groupId>com.alibaba.fastjson2</groupId>-->
<artifactId>fastjson2</artifactId> <!-- <artifactId>fastjson2</artifactId>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>

View File

@ -5,6 +5,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
@ -15,8 +16,9 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
@Slf4j @Slf4j
public class RedisAutoConfiguration { public class RedisAutoConfiguration {
public RedisAutoConfiguration() { @Bean
public RedisConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
} }
@Bean(name = "redisTemplate") @Bean(name = "redisTemplate")

View File

@ -59,9 +59,6 @@ public class TenantAdapterRunner implements CommandLineRunner {
log.info("Start the tenant adapter project!!!"); log.info("Start the tenant adapter project!!!");
ExecutorService pool = Executors.newFixedThreadPool(tenants.size()); ExecutorService pool = Executors.newFixedThreadPool(tenants.size());
ExecutorService checkRegistered = Executors.newSingleThreadExecutor(); ExecutorService checkRegistered = Executors.newSingleThreadExecutor();
// for (TenantResponse tenant : tenants) {
// runTenantAdapterJar(tenant.getTenantCode());
// }
CompletableFuture.allOf(tenants.stream().map(tenant -> CompletableFuture.runAsync(() -> execStartTenantAdapterJar(tenant.getTenantCode()), pool)).toArray(CompletableFuture[]::new)); CompletableFuture.allOf(tenants.stream().map(tenant -> CompletableFuture.runAsync(() -> execStartTenantAdapterJar(tenant.getTenantCode()), pool)).toArray(CompletableFuture[]::new));
pool.shutdown(); pool.shutdown();
checkRegistered.submit(() -> { checkRegistered.submit(() -> {
@ -102,13 +99,21 @@ public class TenantAdapterRunner implements CommandLineRunner {
} }
@NotNull @NotNull
private String[] buildTenantAdapterNacosArgs(String tenantCode) { private String[] buildTenantAdapterRunArgs(String tenantCode) {
Properties nacosProperties = nacosDiscoveryProperties.getNacosProperties(); Properties nacosProperties = nacosDiscoveryProperties.getNacosProperties();
return new String[] {String.format("--NACOS_CONFIG_SERVER=%s", nacosProperties.get("serverAddr")), String.format("--TENANT_CODE=%s", tenantCode), String.format("--DEPLOY_ENV=%s", nacosProperties.get("namespace")), String.format("--NACOS_USER=%s", nacosProperties.get("username")), String.format("--NACOS_PWD=%s", nacosProperties.get("password"))}; return new String[] {
"-Dfile.encoding=utf-8",
"-Dspring.config.location=classpath:/application-dev.yml",
String.format("--NACOS_CONFIG_SERVER=%s", nacosProperties.get("serverAddr")),
String.format("--TENANT_CODE=%s", tenantCode),
String.format("--DEPLOY_ENV=%s", nacosProperties.get("namespace")),
String.format("--NACOS_USER=%s", nacosProperties.get("username")),
String.format("--NACOS_PWD=%s", nacosProperties.get("password"))
};
} }
private void execStartTenantAdapterJar(String tenantCode) { private void execStartTenantAdapterJar(String tenantCode) {
String[] runArgs = buildTenantAdapterNacosArgs(tenantCode); String[] runArgs = buildTenantAdapterRunArgs(tenantCode);
try { try {
log.info("Start the {} adapter project", tenantCode); log.info("Start the {} adapter project", tenantCode);
String[] command = {"java", "-jar", adapterJarFile}; String[] command = {"java", "-jar", adapterJarFile};

View File

@ -1,18 +1,13 @@
package com.qc.soft.deploy.ease.adapter; package com.qc.soft.deploy.ease.adapter;
import com.qc.soft.framework.basic.config.GlobalExceptionHandler;
import com.qc.soft.framework.basic.config.GlobalResponseHandler;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Import;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootConfiguration @SpringBootApplication
@EnableAutoConfiguration
@ComponentScan("com.qc.soft.deploy.ease.*") @ComponentScan("com.qc.soft.deploy.ease.*")
@EnableFeignClients @EnableFeignClients
@EnableDiscoveryClient @EnableDiscoveryClient

View File

@ -5,7 +5,7 @@ import lombok.Data;
@Data @Data
public class JenkinsLoginBasic { public class JenkinsLoginBasic {
private String name; private String envName;
private String url; private String url;

View File

@ -37,7 +37,7 @@ public class TenantAdapterBeanRegistry implements BeanDefinitionRegistryPostProc
} }
TenantContext.setCurrentTenant(environment.getProperty("TENANT_CODE")); TenantContext.setCurrentTenant(environment.getProperty("TENANT_CODE"));
JenkinsLoginBasic loginBasic = new JenkinsLoginBasic(); JenkinsLoginBasic loginBasic = new JenkinsLoginBasic();
loginBasic.setName("longi-dev&uat"); loginBasic.setEnvName("longi-dev&uat");
loginBasic.setUrl("http://jenkins-rd.longi.com:8080"); loginBasic.setUrl("http://jenkins-rd.longi.com:8080");
loginBasic.setUsername("ibpuser"); loginBasic.setUsername("ibpuser");
loginBasic.setPassword("ibp@ibp!2023"); loginBasic.setPassword("ibp@ibp!2023");

View File

@ -14,18 +14,4 @@ public class TenantAdapterConfiguration {
}; };
} }
// @Bean(name = "redisTemplate")
// public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
// RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// redisTemplate.setConnectionFactory(factory);
// RedisSerializer<String> stringSerializer = new StringRedisSerializer();
// GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer();
// redisTemplate.setKeySerializer(stringSerializer);
// redisTemplate.setValueSerializer(serializer);
// redisTemplate.setHashKeySerializer(stringSerializer);
// redisTemplate.setHashValueSerializer(serializer);
// return redisTemplate;
// }
} }

View File

@ -1,6 +1,7 @@
package com.qc.soft.deploy.ease.adapter.consts; package com.qc.soft.deploy.ease.adapter.consts;
import com.qc.soft.deploy.ease.adapter.context.TenantAdapterContext; import com.qc.soft.deploy.ease.adapter.context.TenantAdapterContext;
import com.qc.soft.framework.basic.context.TenantContext;
public class JenkinsConstants { public class JenkinsConstants {
@ -16,11 +17,11 @@ public class JenkinsConstants {
public static final String JENKINS_BUILD_API = "%s/view/%s/job/%s/%s/api/json?pretty=true"; public static final String JENKINS_BUILD_API = "%s/view/%s/job/%s/%s/api/json?pretty=true";
public static final String REDIS_JENKINS_ORIGINAL_VIEW = "deploy-ease:jenkins:" + TenantAdapterContext.getJenkinsLoginBasic().getName() + ":original"; public static final String REDIS_JENKINS_ORIGINAL_VIEW = "deploy-ease:jenkins:" + TenantContext.getCurrentTenant() + ":" + TenantAdapterContext.getJenkinsLoginBasic().getEnvName() + ":original";
public static final String REDIS_JENKINS_ORIGINAL_VIEW_JOB = "deploy-ease:jenkins:" + TenantAdapterContext.getJenkinsLoginBasic().getName() + ":original:view:%s"; public static final String REDIS_JENKINS_ORIGINAL_VIEW_JOB = "deploy-ease:jenkins:" + TenantContext.getCurrentTenant() + ":" + TenantAdapterContext.getJenkinsLoginBasic().getEnvName() + ":original:view:%s";
public static final String REDIS_JENKINS_ORIGINAL_VIEW_JOB_DETAIL = "deploy-ease:jenkins:" + TenantAdapterContext.getJenkinsLoginBasic().getName() + ":original:view:%s:job:%s"; public static final String REDIS_JENKINS_ORIGINAL_VIEW_JOB_DETAIL = "deploy-ease:jenkins:" + TenantContext.getCurrentTenant() + ":" + TenantAdapterContext.getJenkinsLoginBasic().getEnvName() + ":original:view:%s:job:%s";
public static final String REDIS_JENKINS_ORIGINAL_VIEW_BUILD = "deploy-ease:jenkins:" + TenantAdapterContext.getJenkinsLoginBasic().getName() + ":original:view:%s:job:%s:build:%s"; public static final String REDIS_JENKINS_ORIGINAL_VIEW_BUILD = "deploy-ease:jenkins:" + TenantContext.getCurrentTenant() + ":" + TenantAdapterContext.getJenkinsLoginBasic().getEnvName() + ":original:view:%s:job:%s:build:%s";
} }

View File

@ -2,9 +2,7 @@ package com.qc.soft.deploy.ease.adapter.context;
import com.qc.soft.deploy.ease.adapter.api.thirdparty.JenkinsLoginBasic; import com.qc.soft.deploy.ease.adapter.api.thirdparty.JenkinsLoginBasic;
import com.qc.soft.framework.basic.utils.Base64AuthUtils; import com.qc.soft.framework.basic.utils.Base64AuthUtils;
import lombok.Data;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
public class TenantAdapterContext { public class TenantAdapterContext {
@ -12,7 +10,7 @@ public class TenantAdapterContext {
private static final JenkinsLoginBasic jenkinsLoginBasic = new JenkinsLoginBasic(); private static final JenkinsLoginBasic jenkinsLoginBasic = new JenkinsLoginBasic();
public static void buildJenkinsLoginBasic(JenkinsLoginBasic loginBasic) { public static void buildJenkinsLoginBasic(JenkinsLoginBasic loginBasic) {
jenkinsLoginBasic.setName(loginBasic.getName()); jenkinsLoginBasic.setEnvName(loginBasic.getEnvName());
jenkinsLoginBasic.setUrl(loginBasic.getUrl()); jenkinsLoginBasic.setUrl(loginBasic.getUrl());
jenkinsLoginBasic.setUsername(loginBasic.getUsername()); jenkinsLoginBasic.setUsername(loginBasic.getUsername());
jenkinsLoginBasic.setPassword(loginBasic.getPassword()); jenkinsLoginBasic.setPassword(loginBasic.getPassword());

View File

@ -8,6 +8,7 @@ import com.qc.soft.deploy.ease.adapter.controller.response.jenkins.view.JenkinsV
import com.qc.soft.deploy.ease.adapter.service.IJenkinsService; import com.qc.soft.deploy.ease.adapter.service.IJenkinsService;
import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse; import com.qc.soft.deploy.ease.api.response.TenantDictionaryResponse;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.codec.ServerSentEvent;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -16,6 +17,7 @@ import reactor.core.publisher.Flux;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.Duration; import java.time.Duration;
import java.time.LocalTime;
import java.util.List; import java.util.List;
@RestController @RestController
@ -63,10 +65,18 @@ public class JenkinsController {
// return Flux.interval(Duration.ofSeconds(2)).map(index -> jenkinsService.aggregate()); // return Flux.interval(Duration.ofSeconds(2)).map(index -> jenkinsService.aggregate());
// } // }
@GetMapping(value = "jenkins/aggregate") // @GetMapping(value = "jenkins/aggregate")
public JenkinsAggregateResponse aggregate() { // public JenkinsAggregateResponse aggregate() {
return jenkinsService.aggregate(); // return jenkinsService.aggregate();
} // }
//
//
// @GetMapping(value = "/events", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
// public Flux<ServerSentEvent<String>> streamEvents() {
// return Flux.interval(Duration.ofSeconds(1))
// .map(sequence -> ServerSentEvent.<String>builder()
// .id(String.valueOf(sequence))
// .data("Current time: " + LocalTime.now())
// .build());
// }
} }

View File

@ -1,6 +1,8 @@
spring: spring:
application: application:
name: deploy-ease-tenant-adapter name: deploy-ease-tenant-adapter
autoconfigure:
exclude: org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
redis: redis:
enabled: true enabled: true
host: localhost host: localhost

View File

@ -1,6 +1,8 @@
spring: spring:
application: application:
name: deploy-ease-tenant-adapter name: deploy-ease-tenant-adapter
autoconfigure:
exclude: org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
redis: redis:
enabled: true enabled: true
host: localhost host: localhost