如何使用Spring Boot ElasticJob進行配置覆蓋

本文將詳細介紹如何使用Spring Boot ElasticJob進行配置覆蓋。

一、目錄結構

我們需要準備兩個目錄,分別是“elastic-job-lite-spring-boot-starter-example”和“elastic-job-lite-spring-boot-starter-example-override”。

├── elastic-job-lite-spring-boot-starter-example
│   ├── src
│   └── pom.xml
└── elastic-job-lite-spring-boot-starter-example-override
    ├── src
    └── pom.xml

二、使用Spring Boot ElasticJob配置覆蓋

1、使用父模塊

首先,在“elastic-job-lite-spring-boot-starter-example”項目的pom.xml文件中添加父模塊。

<parent>
    <groupId>com.dangdang</groupId>
    <artifactId>elastic-job-lite-root</artifactId>
    <version>${elastic-job.version}</version>
    <relativePath/>
</parent>

然後,添加Spring Boot Starter依賴。

<dependency>
    <groupId>com.dangdang</groupId>
    <artifactId>elastic-job-lite-spring-boot-starter</artifactId>
    <version>${elastic-job.version}</version>
</dependency>

接着,我們需要創建一個簡單的任務,例如:

@Component
public class MySimpleJob implements SimpleJob {
 
    @Override
    public void execute(ShardingContext context) {
        System.out.println(String.format("------Thread ID: %s, 任務總片數: %s, " +
                "當前分片項: %s.當前參數: %s," +
                "當前任務名稱: %s.當前任務參數: %s",
            Thread.currentThread().getId(),
            context.getShardingTotalCount(),
            context.getShardingItem(),
            context.getShardingParameter(),
            context.getTaskName(),
            context.getJobParameter()));
    }
}

2、使用子模塊

現在,在“elastic-job-lite-spring-boot-starter-example-override”項目的pom.xml文件中,我們需要重寫默認的配置。

<parent>
    <groupId>com.dangdang</groupId>
    <artifactId>elastic-job-lite-root</artifactId>
    <version>${elastic-job.version}</version>
    <relativePath/>
</parent>
 
<artifactId>elastic-job-lite-spring-boot-starter-example-override</artifactId>
 
<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot-starter.version>2.4.5</spring-boot-starter.version>
</properties>
 
<dependencies>
    <dependency>
        <groupId>com.dangdang</groupId>
        <artifactId>elastic-job-lite-spring-boot-starter</artifactId>
        <version>${elastic-job.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
 
<profiles>
    <!-- 自定義profile,名稱為dev -->
    <profile>
        <id>dev</id>
        <build>
            <finalName>elastic-job-lite-spring-boot-starter-example-override-dev</finalName>
        </build>
        <properties>
            <spring.profiles.active>dev</spring.profiles.active>
        </properties>
    </profile>
    <!-- 自定義profile,名稱為test -->
    <profile>
        <id>test</id>
        <build>
            <finalName>elastic-job-lite-spring-boot-starter-example-override-test</finalName>
        </build>
        <properties>
            <spring.profiles.active>test</spring.profiles.active>
        </properties>
    </profile>
</profiles>

可以看到,我們添加了Spring Boot Test依賴,以及兩個profiles。

3、配置覆蓋

現在,我們需要在“elastic-job-lite-spring-boot-starter-example-override”目錄下創建“application-dev.properties”。

elasticjob.zk.serverLists=localhost:2181
elasticjob.zk.namespace=my-namespace

這裡,我們只覆蓋了ZooKeeper的地址和命名空間。

同樣地,我們也需要在“elastic-job-lite-spring-boot-starter-example-override”目錄下創建“application-test.properties”。

elasticjob.zk.serverLists=localhost:2181
elasticjob.zk.namespace=my-test-namespace

這裡,我們覆蓋了ZooKeeper的地址,並且使用了一個不同的命名空間。

三、運行示例項目

最後,我們可以在兩個沒目錄下運行示例項目。

1、在“elastic-job-lite-spring-boot-starter-example”目錄下運行

java -jar target/elastic-job-lite-spring-boot-starter-example-${project.version}.jar

當我們在瀏覽器中訪問“http://localhost:8080/job/initSimpleJob”時,我們將會看到如下的結果。

------Thread ID: 38, 任務總片數: 3, 當前分片項: 1.當前參數: a,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 39, 任務總片數: 3, 當前分片項: 2.當前參數: b,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 48, 任務總片數: 3, 當前分片項: 0.當前參數: c,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob

2、在“elastic-job-lite-spring-boot-starter-example-override”目錄下運行

運行dev profile

java -jar -Dspring.profiles.active=dev target/elastic-job-lite-spring-boot-starter-example-override-${project.version}-dev.jar

當我們在瀏覽器中訪問“http://localhost:18080/job/initSimpleJob”時,我們將會看到如下的結果。

------Thread ID: 30, 任務總片數: 3, 當前分片項: 0.當前參數: c,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 32, 任務總片數: 3, 當前分片項: 1.當前參數: a,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 36, 任務總片數: 3, 當前分片項: 2.當前參數: b,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob

運行test profile

java -jar -Dspring.profiles.active=test target/elastic-job-lite-spring-boot-starter-example-override-${project.version}-test.jar

當我們在瀏覽器中訪問“http://localhost:8090/job/initSimpleJob”時,我們將會看到如下的結果。

------Thread ID: 39, 任務總片數: 3, 當前分片項: 0.當前參數: a,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 42, 任務總片數: 3, 當前分片項: 2.當前參數: b,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob
------Thread ID: 43, 任務總片數: 3, 當前分片項: 1.當前參數: c,
當前任務名稱: initSimpleJob.當前任務參數: mySimpleJob

四、總結

本文介紹了如何使用Spring Boot ElasticJob進行配置覆蓋,通過運行示例項目,我們可以看到不同的配置被覆蓋。

原創文章,作者:FINBS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/374993.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FINBS的頭像FINBS
上一篇 2025-04-28 13:17
下一篇 2025-04-28 13:17

相關推薦

  • 如何使用Python獲取某一行

    您可能經常會遇到需要處理文本文件數據的情況,在這種情況下,我們需要從文本文件中獲取特定一行的數據並對其進行處理。Python提供了許多方法來讀取和處理文本文件中的數據,而在本文中,…

    編程 2025-04-29
  • Spring Boot 集成 Jacoco

    本文將從以下幾個方面介紹如何在 Spring Boot 中集成 Jacoco:1、Jacoco 概述;2、Spring Boot 集成 Jacoco 的配置;3、生成 Jacoco…

    編程 2025-04-29
  • 如何使用jumpserver調用遠程桌面

    本文將介紹如何使用jumpserver實現遠程桌面功能 一、安裝jumpserver 首先我們需要安裝並配置jumpserver。 $ wget -O /etc/yum.repos…

    編程 2025-04-29
  • Spring Boot中發GET請求參數的處理

    本文將詳細介紹如何在Spring Boot中處理GET請求參數,並給出完整的代碼示例。 一、Spring Boot的GET請求參數基礎 在Spring Boot中,處理GET請求參…

    編程 2025-04-29
  • 如何使用Python讀取CSV數據

    在數據分析、數據挖掘和機器學習等領域,CSV文件是一種非常常見的文件格式。Python作為一種廣泛使用的編程語言,也提供了方便易用的CSV讀取庫。本文將介紹如何使用Python讀取…

    編程 2025-04-29
  • Hibernate註解聯合主鍵 如何使用

    解答:Hibernate的註解方式可以用來定義聯合主鍵,使用@Embeddable和@EmbeddedId註解。 一、@Embeddable和@EmbeddedId註解 在Hibe…

    編程 2025-04-29
  • 如何使用HTML修改layui內部樣式影響全局

    如果您想要使用layui來構建一個美觀的網站或應用,您可能需要使用一些自定義CSS來修改layui內部組件的樣式。然而,修改layui組件的樣式可能會對整個頁面產生影響,甚至可能破…

    編程 2025-04-29
  • 如何使用random生成不重複的隨機數

    在編程開發中,我們經常需要使用隨機數來模擬一些場景或生成一些數據。但是如果隨機數重複,就會造成數據的不準確性。這時我們就需要使用random庫來生成不重複且隨機的數值。下面將從幾個…

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨着深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • 如何使用Python導入Random庫

    Python是一門優秀的編程語言,它擁有豐富的第三方庫和模塊。其中,Random庫可謂是最常用的庫之一,它提供了用於生成隨機數的功能。對於開發人員而言,使用Random庫能夠提高開…

    編程 2025-04-29

發表回復

登錄後才能評論