SpringBoot——结合nacos实现动态刷新自定义线程池

需求

  1. 实现自定义线程池
  2. 实现线程池参数动态刷新

自定义动态线程池模板

自定义动态线程池代码

@Data
@Slf4j
@Configuration
@RefreshScope
@ConfigurationProperties("custom.threadpool")
public class DemoThreadPool implements InitializingBean {

    /**
     * thread name format
     */
    public static final String DEMO_THREAD_NAME = "DEMO-THREAD-%d";

    /**
     * core pool size, default: 8
     * 1、CPU-intensive: CPU-cores + 1
     * 2、IO intensive:CPU-cores/(1-blocking-factor), blocking factor: 0.8~0.9
     */
    @Value("${corePoolSize:8}")
    private Integer corePoolSize;

    /**
     * max pool size, default: 100
     */
    @Value("${maxPoolSize:100}")
    private Integer maximumPoolSize;

    /**
     * idle thread keep alive time (unit: s), default: 60
     */
    @Value("${keepAliveTime:60}")
    private Long keepAliveTime;

    /**
     * queue capacity size, default: 16
     */
    @Value("${capacitySize:16}")
    private Integer capacitySize;
    /**
     * dynamic refresh switch, default: false
     */
    @Value("${dynamicRefreshSwitch:false}")
    private Boolean dynamicRefreshSwitch;

    /**
     * listened service's nacos dataId
     */
    @Value("${dataId:demo-service}")
    private String dataId;

    /**
     * thread pool executor
     */
    public static ThreadPoolExecutor demo
Spring Boot中,也可以使用Nacos实现全局动态刷新配置文件。Nacos是一个开源的动态服务发现和配置管理平台,它可以作为配置中心来管理和提供应用程序的配置文件,并支持动态刷新配置文件。 下面是实现全局动态刷新配置文件的步骤: 1. 引入Nacos依赖 在pom.xml文件中加入以下依赖: ``` <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 2. 配置Nacos 在application.properties文件中配置Nacos: ``` spring.cloud.nacos.config.server-addr=<nacos-server-address> spring.cloud.nacos.config.namespace=<nacos-namespace> spring.cloud.nacos.config.prefix=<nacos-config-prefix> spring.cloud.nacos.config.file-extension=<nacos-config-file-extension> ``` 其中,`<nacos-server-address>`是Nacos Server的地址,`<nacos-namespace>`是Nacos的命名空间,`<nacos-config-prefix>`是配置文件的前缀,`<nacos-config-file-extension>`是配置文件的扩展名。 3. 配置客户端应用程序 在客户端应用程序中,需要引入以下依赖: ``` <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 同时,在bootstrap.properties文件中配置客户端应用程序: ``` spring.application.name=my-app spring.cloud.nacos.config.server-addr=<nacos-server-address> spring.cloud.nacos.config.namespace=<nacos-namespace> spring.cloud.nacos.config.prefix=<nacos-config-prefix> spring.cloud.nacos.config.file-extension=<nacos-config-file-extension> ``` 其中,`my-app`是应用程序的名称,`<nacos-server-address>`、`<nacos-namespace>`、`<nacos-config-prefix>`、`<nacos-config-file-extension>`与Nacos配置一致。 4. 配置动态刷新 在客户端应用程序中,需要配置动态刷新。可以在application.properties文件中添加以下配置: ``` management.endpoints.web.exposure.include=* management.endpoint.refresh.enabled=true ``` 其中,`management.endpoints.web.exposure.include=*`是开启所有的Actuator端点,`management.endpoint.refresh.enabled=true`是开启动态刷新功能。 5. 发布配置文件 将应用程序的配置文件上传到Nacos中。 6. 动态刷新配置文件 在配置文件发生变化时,可以通过访问以下URL来触发动态刷新: ``` POST http://localhost:8080/actuator/refresh ``` 其中,`http://localhost:8080`是客户端应用程序的地址。 以上就是实现全局动态刷新配置文件的方法。通过Nacos动态刷新功能,可以方便地管理和更新应用程序的配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值