最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn)

 更新時(shí)間:2023年07月11日 15:17:21   作者:xiaogg3678  
本文主要介紹了k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

kubernetes+springboot+CronJob 定時(shí)任務(wù)配置如下代碼:

cronjob.yaml k8s 文件  

apiVersion: batch/v1
kind: CronJob
metadata:
  name: k8s-springboot-demo
  namespace: rz-dt
spec:
  failedJobsHistoryLimit: 3 #執(zhí)行失敗job任務(wù)保留數(shù)量
  successfulJobsHistoryLimit: 5 #執(zhí)行成功job任務(wù)保留數(shù)量
  startingDeadlineSeconds: 180
  concurrencyPolicy: Forbid
  schedule: "*/1 * * * *" #每分鐘執(zhí)行一次
  jobTemplate:
    spec:
      template:
        spec:
          containers:
            - name: k8s-springboot-demo
              image: rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:$IMG_TAG
              imagePullPolicy: Always
              #command: ["java","-jar","/usr/local/cenobitor/k8s-springboot-demo.jar"]#dockerfile已有此處不需要配置
              args: ["sendEmail","sendEmail2"] # 配置任務(wù)類的名稱
              volumeMounts:
                - name: time-config
                  mountPath: /etc/localtime
                  readOnly: true
              #envFrom:
              # - configMapRef:
              #      name: smcp-config
              # - secretRef:
              #     name: smcp-service-secret
              resources:
                requests:
                  cpu: "250m"
                  memory: 216Mi
                limits:
                  cpu: "500m"
                  memory: 512Mi
          restartPolicy: Never
          #從私有倉庫拉取鏡像憑證
          imagePullSecrets:
            - name: rz-dt-miyue-vpc
          volumes:
            - name: time-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai

Dockerfile 文件

#基礎(chǔ)鏡像,如果本地倉庫沒有,會(huì)從遠(yuǎn)程倉庫拉取 openjdk:8
FROM openjdk:8
#暴露端口
EXPOSE 8089
#容器中創(chuàng)建目錄
RUN mkdir -p /usr/local/cenobitor
#編譯后的jar包c(diǎn)opy到容器中創(chuàng)建到目錄內(nèi)
COPY target/k8s-springboot-demo.jar /usr/local/cenobitor/k8s-springboot-demo.jar
#指定容器啟動(dòng)時(shí)要執(zhí)行的命令
ENTRYPOINT ["java","-jar","/usr/local/cenobitor/k8s-springboot-demo.jar"]

test.sh 文件

echo "開始制作鏡像..."
image_tag=`date +%Y-%m-%d-%H-%M-%S` #_%H%M
echo "當(dāng)前時(shí)間:$image_tag"
docker build -t k8s-springboot-demo:${image_tag} .
echo "制作鏡像成功!"
echo "登錄"
sudo docker login --username=aliyun0398513152 rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com --password=1234
echo "鏡像最新版本提交"
docker tag k8s-springboot-demo:${image_tag} rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:${image_tag}
docker push rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:${image_tag}
echo "k8s一鍵部署"
export IMG_TAG=${image_tag}
envsubst < cronjob.yaml | kubectl --kubeconfig ~/.kube-rz/config apply -f -
 

4個(gè)代碼實(shí)現(xiàn)類:

package com.example.demo.job;
public interface Command {
    /**
     * 遵循Unix約定,如果命令執(zhí)行正常,則返回0;否則為非0。
     */
    int execute(String... args);
}
package com.example.demo.job;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class SendEmailCommand implements Command {
    @Override
    public int execute(String... args) {
        try {
            // 省略業(yè)務(wù)邏輯代碼
            for (String arg:args) {
                log.info("send email  success args:" +arg);
            }
            log.info("send email success");
            return 0;
        } catch (Exception e) {
            log.error("send email error", e);
            return -1;
        }
    }
}
package com.example.demo.job;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class SendEmail2Command implements Command {
    @Override
    public int execute(String... args) {
        try {
            // 省略業(yè)務(wù)邏輯代碼
            for (String arg:args) {
                log.info("send email 2  success args:" +arg);
            }
            log.info("send email 2 success");
            return 0;
        } catch (Exception e) {
            log.error("send email error", e);
            return -1;
        }
    }
}
package com.example.demo.job;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Component
@Slf4j
public class ProjectCommandLineRunner implements CommandLineRunner {
    Map<String, Command> commandMap = new HashMap<>();
    @Autowired
    private SendEmailCommand sendEmailCommand;
    @Autowired
    private SendEmail2Command sendEmail2Command;
    @PostConstruct
    private void init() {
        commandMap.put("sendEmail", sendEmailCommand);
        commandMap.put("sendEmail2", sendEmail2Command);
    }
    @Override
    public void run(String... args) throws Exception {
        if (args.length == 0) {
            return;
        }
        if (!commandMap.containsKey(args[0])) {
            log.error("'{}' command not found", args[0]);
            System.exit(-1);
        }
        for (String arg:args) {
            log.info("command args:" +arg);
        }
       for (int i = 0; i < args.length; i++) {
            Command command =  commandMap.get(args[i]);
            String[] arguments = Arrays.copyOfRange(args, 0, args.length);
            command.execute(arguments);
        }
        //執(zhí)行成功則,正常退出0, 異常退出非0
        System.exit(0);
    }
}
 

kubectl 客戶端執(zhí)行,sh test.sh :

到此這篇關(guān)于k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)springboot CronJob定時(shí)任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java經(jīng)典排序算法之二分插入排序詳解

    Java經(jīng)典排序算法之二分插入排序詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之二分插入排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java利用AQS實(shí)現(xiàn)自定義鎖

    Java利用AQS實(shí)現(xiàn)自定義鎖

    本文主要介紹了Java利用AQS實(shí)現(xiàn)自定義鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Hibernate的延遲加載的項(xiàng)目實(shí)踐

    Hibernate的延遲加載的項(xiàng)目實(shí)踐

    Hibernate延遲加載(Lazy Loading)是一種性能優(yōu)化技術(shù),僅在需要時(shí)加載關(guān)聯(lián)數(shù)據(jù),減少初始查詢和內(nèi)存消耗,本文就來介紹一下Hibernate 延遲加載的實(shí)現(xiàn),感興趣的可以了解一下
    2026-01-01
  • 詳解Reactor中Context的用法

    詳解Reactor中Context的用法

    在Reactor中提供了Context來替代ThreadLocal,可以實(shí)現(xiàn)一個(gè)跨線程的共享變量的透明方式。本文主要為大家介紹了Context的用法的用法,感興趣的可以了解一下
    2023-02-02
  • Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用

    Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)之ByteArrayOutputStream流的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JavaWeb?Listener?利用Session統(tǒng)計(jì)在線人數(shù)

    JavaWeb?Listener?利用Session統(tǒng)計(jì)在線人數(shù)

    這篇文章主要為大家介紹了JavaWeb?Listener?利用Session統(tǒng)計(jì)在線人數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • java偽泛型知識(shí)點(diǎn)詳解

    java偽泛型知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于java偽泛型知識(shí)點(diǎn)詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-06-06
  • java簡單工廠模式入門

    java簡單工廠模式入門

    下面小編就為大家?guī)硪黄猨ava工廠模式入門文章。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java concurrency之AtomicLongFieldUpdater原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之AtomicLongFieldUpdater原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    AtomicLongFieldUpdater可以對指定"類的 'volatile long'類型的成員"進(jìn)行原子更新。它是基于反射原理實(shí)現(xiàn)的。下面通過本文給大家分享Java concurrency之AtomicLongFieldUpdater原子類的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2017-06-06
  • Java Synchronized鎖失敗案例及解決方案

    Java Synchronized鎖失敗案例及解決方案

    這篇文章主要介紹了Java Synchronized鎖失敗案例及解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

景德镇市| 馆陶县| 宜川县| 海晏县| 漯河市| 巨野县| 霍邱县| 三亚市| 丰镇市| 塔城市| 称多县| 仁怀市| 砚山县| 瓮安县| 东乡族自治县| 邵东县| 儋州市| 遵化市| 汾阳市| 双峰县| 武安市| 东乡族自治县| 弥勒县| 平顺县| 潍坊市| 弥勒县| 新河县| 东莞市| 大石桥市| 会东县| 阿克陶县| 中江县| 水富县| 仁布县| 嵊州市| 白河县| 吉林省| 祁阳县| 岳阳市| 安宁市| 巧家县|