Eureka注册中心通用写法和配置

  • 下面简单介绍下 Eureka 注册中心的通用写法

  • 新建个空项目,pom 中加入如下依赖

xml 复制代码
<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <version>2.5.12</version>
   </dependency>

   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
       <version>3.0.5</version>
   </dependency>

   <dependency>
       <groupId>at.twinformatics</groupId>
       <artifactId>eureka-consul-adapter</artifactId>
       <version>1.3.0</version>
   </dependency>

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-security</artifactId>
       <version>2.5.8</version>
   </dependency>

   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-actuator</artifactId>
       <version>2.7.18</version>
   </dependency>
</dependencies>
  • 新建个包路径:com.xdr630.registry.config
java 复制代码
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${eureka.security.enabled:false}")
    private boolean securityEnabled;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    	// 关闭csrf设置
        http.csrf().disable();
        if(!securityEnabled){
        	// 配置不需要登录验证
            http.authorizeRequests().anyRequest().permitAll()
                .and().logout().permitAll();
            return;
        }
        super.configure(http);
    }
}
  • 在 com.xdr630.registry 包下,新建启动类
java 复制代码
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

    private static final Logger log = LoggerFactory.getLogger(EurekaServerApplication.class);

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(EurekaServerApplication.class);
        app.addListeners(new ApplicationPidFileWriter(), new WebServerPortFileWriter());
        Environment env = app.run(args).getEnvironment();
        logApplicationStartup(env);
    }

    private static void logApplicationStartup(Environment env) {
        String protocol = "http";
        if (env.getProperty("server.ssl.key-store") != null) {
            protocol = "https";
        }
        String serverPort = env.getProperty("server.port");
        String contextPath = env.getProperty("server.servlet.context-path");
        if (StringUtils.isEmpty(contextPath)) {
            contextPath = "/";
        }
        String hostAddress = "localhost";
        try {
            hostAddress = InetAddress.getLocalHost().getHostAddress();
        } catch (UnknownHostException e) {
            log.warn("The host name could not be determined, using `localhost` as fallback");
        }
        // @formatter:off
        log.info("\n----------------------------------------------------------\n\t" +
                "Application '{}' is running! Access URLs:\n\t" +
                "Local: \t\t{}://localhost:{}{}\n\t" +
                "External: \t{}://{}:{}{}\n\t" +
                "Profile(s): \t{}\n----------------------------------------------------------",
            env.getProperty("spring.application.name"),
            protocol,
            serverPort,
            contextPath,
            protocol,
            hostAddress,
            serverPort,
            contextPath,
            env.getActiveProfiles());
        // @formatter:on
    }
}
  • resources 下 application.yml
yml 复制代码
spring:
  application:
     name: eureka-registry
  # 配置认证用户名和密码,不配置系统会随机生成
  security:
    user:
      name: user	#认证用户名
      password: 123456 #认证密码
server:
  port: 8081
    
eureka:
  server:
    #关闭自我保护模式
    enableSelfPreservation: false
    #主动失效时间,默认60*1000
    evictionIntervalTimerInMs: 5000
    #禁用readOnlyCacheMap
    useReadOnlyResponseCache: false
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      #defaultZone: http://localhost:8081/eureka/  #未开启认证时url
      defaultZone: http://user:123456@localhost:8081/eureka/ #开启认证时url


management:
  endpoints:
    web:
      exposure:
        include: "*" #["configprops", "env", "health", "info", "jhimetrics", "logfile", "loggers", "threaddump"]
  endpoint:
    health:
      show-details: always #when_authorized
    env:
      enabled: false
    mappings:
      enabled: false
    configprops:
      enabled: false
    heapdump:
      enabled: false
    loggers:
      enabled: false
    conditions:
      enabled: false
    beans:
      enabled: false
  metrics:
    enable:
      http: true
      jvm: true
      logback: true
      process: true
      system: true
    distribution:
      percentiles-histogram:
        all: true
      percentiles:
        all: 0, 0.5, 0.75, 0.95, 0.99, 1.0
  • logback-spring.xml
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration scan="false">
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />

    <property name="APP_NAME" value="registry-eureka"/>
    <property name="LOG_FILE" value="${BUILD_FOLDER:-logs}/${APP_NAME}"/>
    <property name="LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] %level [${APP_NAME:-},%X{traceId},%X{spanId},%X{parentId}] ${PID:- } --- [%thread] %-40.40class{39} %L: %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} \n"/>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_FILE}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_FILE}-%d{yyyyMMdd}.log.%i</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>20GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <Pattern>${LOG_PATTERN}</Pattern>
        </encoder>
    </appender>

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

    <logger name="org.mybatis.spring" level="INFO"/>
    <logger name="io.netty" level="INFO"/>
    <logger name="com.ulisesbocchio" level="INFO"/>
    <logger name="org.quartz" level="INFO"/>

</configuration>
相关推荐
2301_780789664 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设5 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
时间售卖铺5 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
步行cgn5 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川5 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵5 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
秋天的怀念_David6 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1006 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
niucloud-admin6 小时前
NIUCLOUD PHP SAAS上门家政使用文档:城市管理
java·前端·php
霸道流氓气质7 小时前
智能客服组件:分层意图识别、RAG Advisor 与人工转接状态机的 Vue3 + Spring AI 生产级实战
java·人工智能·spring