精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot與Temporal整合,實現訂單處理工作流功能

開發 前端
通過 Temporal,我們可以將一些步驟定義為一個復雜的工作流,并利用其強大的特性來管理整個流程,確保每一步都可靠地執行,并且在整個過程中提供靈活的控制和監控能力。

通過 Temporal,我們可以將一些步驟定義為一個復雜的工作流,并利用其強大的特性來管理整個流程,確保每一步都可靠地執行,并且在整個過程中提供靈活的控制和監控能力。

哪些公司使用了Temporal?

  • Netflix 使用 Temporal 來管理其復雜的微服務架構中的工作流,特別是在視頻內容處理和推薦系統中。
  • Airbnb 利用 Temporal 來管理內部的各種自動化任務,包括數據同步、報告生成和用戶通知等。
  • DoorDash 使用 Temporal 來管理配送員的任務分配、訂單跟蹤和物流協調。
  • Uber 在多個業務領域使用 Temporal,包括司機調度、訂單處理和客戶服務支持。
  • Coinbase 使用 Temporal 來管理其金融交易流程,包括訂單執行、結算和合規檢查。
  • Lyft 使用 Temporal 來管理車輛調度、乘客匹配和行程跟蹤。
  • Salesforce 使用 Temporal 來管理其內部的自動化任務和客戶工作流。
  • Etsy 使用 Temporal 來管理其內部的自動化任務和供應鏈管理流程。

我們為什么選擇Temporal來實現訂單處理工作流?

  • 可靠性和一致性: Temporal 提供了強大的分布式事務管理能力,確保每個步驟(如支付、發貨、退款)都能可靠地執行,并且整個流程的一致性得到保證。
  • 失敗重試: Temporal 內置了自動重試機制,當某個步驟失敗時,可以自動重試,直到成功或達到最大重試次數。
  • 水平擴展: Temporal 可以輕松地水平擴展,適應高并發的訂單處理需求。
  • 高效調度: Temporal 使用高效的調度算法來管理任務隊列,確保各個步驟能夠快速而有序地執行。
  • 靈活的工作流定義: Temporal 支持復雜的業務邏輯定義,可以通過編程方式構建多分支、循環等工作流。
  • 信號和查詢: Temporal 提供了信號和查詢功能,允許在工作流運行過程中動態地發送信號或獲取狀態信息,從而實現靈活的狀態管理和控制。
  • 詳細的日志記錄: Temporal 提供了詳細的日志記錄功能,方便開發者監控和調試工作流的執行情況。
  • 可視化工具: Temporal 提供了可視化的 Web 界面,幫助開發者直觀地查看工作流的狀態和歷史記錄。
  • 開源免費: 對于小型項目或非關鍵業務場景,可以選擇使用開源版本的 Temporal,無需額外費用。

啟動Temporal服務

docker run --name temporal -d -p 7233:7233 temporalio/server:latest

代碼實操

<dependency>
    <groupId>io.temporal</groupId>
    <artifactId>temporal-sdk</artifactId>
    <version>1.19.0</version>
</dependency>
<dependency>
    <groupId>io.temporal</groupId>
    <artifactId>temporal-spring-boot-starter</artifactId>
    <version>1.19.0</version>
</dependency>

OrderWorkflowApplication

package com.example.orderworkflow;

import io.temporal.client.WorkflowClient;
import io.temporal.serviceclient.WorkflowServiceStubs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class OrderWorkflowApplication {

    public static void main(String[] args) {
        // 啟動Spring Boot應用程序
        SpringApplication.run(OrderWorkflowApplication.class, args);
    }

    @Bean
    public WorkflowClient workflowClient() {
        // 創建Temporal服務存根
        WorkflowServiceStubs service = WorkflowServiceStubs.newInstance();
        // 返回一個新的Workflow客戶端實例
        return WorkflowClient.newInstance(service);
    }
}

activities/OrderActivities

package com.example.orderworkflow.activities;

import io.temporal.activity.ActivityInterface;
import io.temporal.activity.ActivityMethod;

@ActivityInterface
public interface OrderActivities {
    // 定義處理支付的活動方法
    @ActivityMethod
    String processPayment(String orderId);

    // 定義發貨的活動方法
    @ActivityMethod
    String shipOrder(String orderId);

    // 定義退款的活動方法
    @ActivityMethod
    String refundOrder(String orderId);
}

activities/OrderActivitiesImpl

實現了這三個活動方法的具體邏輯,模擬了支付、發貨和退款的過程。

package com.example.orderworkflow.activities;

import io.temporal.activity.Activity;
import org.springframework.stereotype.Service;

@Service
public class OrderActivitiesImpl implements OrderActivities {
    @Override
    public String processPayment(String orderId) {
        // 模擬處理支付過程
        Activity.getExecutionContext().heartbeat("Processing payment for order: " + orderId);
        System.out.println("Processing payment for order: " + orderId);
        return"PAYMENT_SUCCESS";
    }

    @Override
    public String shipOrder(String orderId) {
        // 模擬發貨過程
        Activity.getExecutionContext().heartbeat("Shipping order: " + orderId);
        System.out.println("Shipping order: " + orderId);
        return"SHIP_SUCCESS";
    }

    @Override
    public String refundOrder(String orderId) {
        // 模擬退款過程
        Activity.getExecutionContext().heartbeat("Refunding order: " + orderId);
        System.out.println("Refunding order: " + orderId);
        return"REFUND_SUCCESS";
    }
}

workflows/OrderWorkflow

定義了一個工作流方法 startOrderProcess 和兩個信號方法 retryStep 和 rollbackStep。

package com.example.orderworkflow.workflows;

import io.temporal.workflow.SignalMethod;
import io.temporal.workflow.WorkflowInterface;
import io.temporal.workflow.WorkflowMethod;

@WorkflowInterface
public interface OrderWorkflow {
    // 定義啟動訂單處理的工作流方法
    @WorkflowMethod
    void startOrderProcess(String orderId);

    // 定義重試步驟的信號方法
    @SignalMethod
    void retryStep();

    // 定義回滾步驟的信號方法
    @SignalMethod
    void rollbackStep();
}

workflows/OrderWorkflowImpl

實現了工作流邏輯,包括按順序執行支付、發貨步驟,并支持重試和回滾操作。

package com.example.orderworkflow.workflows;

import com.example.orderworkflow.activities.OrderActivities;
import io.temporal.activity.ActivityOptions;
import io.temporal.common.Duration;
import io.temporal.workflow.Workflow;

public class OrderWorkflowImpl implements OrderWorkflow {
    // 創建活動存根,并設置活動選項(例如超時時間)
    private final OrderActivities activities = Workflow.newActivityStub(
            OrderActivities.class,
            ActivityOptions.newBuilder()
                    .setStartToCloseTimeout(Duration.ofSeconds(5))
                    .build());

    // 記錄當前步驟,默認為“PAYMENT”
    private String currentStep = "PAYMENT";

    @Override
    public void startOrderProcess(String orderId) {
        try {
            // 如果當前步驟是“PAYMENT”,則執行支付活動
            if (currentStep.equals("PAYMENT")) {
                activities.processPayment(orderId);
                currentStep = "SHIP"; // 支付成功后,移動到下一個步驟“SHIP”
            }
            // 如果當前步驟是“SHIP”,則執行發貨活動
            if (currentStep.equals("SHIP")) {
                activities.shipOrder(orderId);
                currentStep = "COMPLETED"; // 發貨成功后,標記訂單完成
            }
        } catch (Exception e) {
            // 捕獲并打印異常信息
            System.err.println("Error in step: " + currentStep + ", Error message: " + e.getMessage());
            throw new RuntimeException(e); // 拋出運行時異常
        }
    }

    @Override
    public void retryStep() {
        // 打印正在重試的步驟
        System.out.println("Retrying step: " + currentStep);
        // 重新啟動訂單處理流程
        startOrderProcess(Workflow.getInfo().getWorkflowId());
    }

    @Override
    public void rollbackStep() {
        // 如果當前步驟是“SHIP”,則執行退款活動并將步驟回滾到“PAYMENT”
        if (currentStep.equals("SHIP")) {
            activities.refundOrder(Workflow.getInfo().getWorkflowId());
            currentStep = "PAYMENT";
        }
        // 打印回滾后的步驟
        System.out.println("Rolled back to step: " + currentStep);
    }
}

啟動工作流實例

package com.example.orderworkflow;

import com.example.orderworkflow.workflows.OrderWorkflow;
import io.temporal.client.WorkflowClient;
import io.temporal.client.WorkflowOptions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class WorkflowStarter implements CommandLineRunner {

    @Autowired
    private WorkflowClient workflowClient;

    @Override
    public void run(String... args) throws Exception {
        // 定義工作流選項
        WorkflowOptions options = WorkflowOptions.newBuilder()
                .setWorkflowId("order-workflow-id")
                .setTaskQueue("order-task-queue")
                .build();

        // 獲取工作流存根
        OrderWorkflow workflow = workflowClient.newWorkflowStub(OrderWorkflow.class, options);

        // 啟動工作流實例
        WorkflowClient.start(workflow::startOrderProcess, "orderId123");

        System.out.println("Started workflow with ID: " + workflow.getExecution().getWorkflowId());
    }
}


責任編輯:武曉燕 來源: Java知識日歷
相關推薦

2013-07-19 13:58:36

API存儲

2023-07-05 09:48:44

Activiti部署

2025-09-08 09:14:31

SpringQuartz自動識別

2023-06-12 08:01:57

Camunda工作流引擎

2021-12-17 08:39:39

SpringbootActiviti網關路由

2009-03-03 09:13:36

工作流BPM業務流程

2025-03-28 09:15:50

2025-08-08 02:11:00

SpringFunctions流處理

2009-09-01 18:19:39

C#工作流

2011-05-25 17:04:41

ibmdwLotus

2025-07-10 08:46:21

ConnectSpringBoot數據

2025-05-14 03:20:00

AgenticAIMCP

2022-10-26 08:00:43

Activiti工作流BPM

2021-10-14 11:34:05

技術工作流引擎

2023-08-02 18:48:23

Flowable工作流引擎

2013-04-23 10:28:08

IBeamMDAAWF

2024-04-25 08:00:00

DevOps架構軟件開發

2025-02-14 09:07:35

2022-07-07 08:38:15

Springflowable引擎

2020-08-06 08:26:22

Kubernetes架構開發
點贊
收藏

51CTO技術棧公眾號

国产精品99精品无码视| 男人插女人下面免费视频| www日本高清| 久久久久久穴| 久久在线免费观看视频| 香蕉久久久久久av成人| 范冰冰一级做a爰片久久毛片| 欧美激情一区三区| 97免费资源站| 成人一二三四区| 精品1区2区3区4区| 中文字幕亚洲欧美在线| 涩视频在线观看| 久久婷婷五月综合色丁香| 亚洲一区二区精品视频| 亚洲精品一品区二品区三品区| 亚洲国产www| 美腿丝袜亚洲综合| 国产91精品久久久久久| 免费高清在线观看电视| 狠狠色狠狠色综合婷婷tag| 欧美第一区第二区| 国产又黄又猛的视频| 三妻四妾完整版在线观看电视剧| 综合久久国产九一剧情麻豆| 欧美主播一区二区三区美女 久久精品人 | 久久综合久久色| 成人影音在线| 亚洲欧美日韩国产手机在线| 欧美一区二区三区在线免费观看| 成人午夜精品福利免费| 国产一区二区毛片| 成人福利视频网| 中文字幕有码视频| 日韩影院在线观看| 青青草国产精品一区二区| 久一区二区三区| 最新欧美人z0oozo0| 日韩中文字在线| 在线看片中文字幕| 成人在线一区| 深夜福利91大全| 成年人在线免费看片| 久久93精品国产91久久综合| 亚洲精品720p| 国产乱了高清露脸对白| 亚洲a级精品| 精品呦交小u女在线| 2一3sex性hd| 日韩av影院| 精品一区二区三区三区| 中文字幕av网址| 免费短视频成人日韩| 日韩毛片中文字幕| 成人午夜福利一区二区| 久久99国产精品视频| 亚洲人成网站免费播放| 91精品人妻一区二区| 你微笑时很美电视剧整集高清不卡| 亚洲精品久久久一区二区三区 | 日韩一级片播放| 国产黄色大片在线观看| 亚洲超碰精品一区二区| 天天夜碰日日摸日日澡性色av| 99riav视频在线观看| 精品国产福利视频| 无码日韩人妻精品久久蜜桃| 最新日韩一区| 欧美日韩黄色一区二区| 亚洲第一色av| 国产精品一线| 亚洲欧美中文字幕在线一区| 精品亚洲aⅴ无码一区二区三区| 第一sis亚洲原创| 欧美成人激情视频| 久久不卡免费视频| 麻豆精品久久精品色综合| 日韩欧美亚洲综合| 欧美大片va欧美在线播放| 国产在线综合视频| 亚洲国产精品综合久久久 | 亚洲精品一区二区三区精华液| 日本护士做爰视频| 日韩欧美精品| 欧美激情亚洲综合一区| 手机在线看片1024| 国产一区啦啦啦在线观看| 国产超碰91| 二区三区在线| 亚洲综合av网| 9久久婷婷国产综合精品性色| 国产高清日韩| 国产视频自拍一区| 中文字幕亚洲欧美日韩| 国产日韩欧美| 亚洲综合精品伊人久久| 欧美孕妇孕交| 亚洲激情男女视频| 日韩欧美国产精品一区| 牛夜精品久久久久久久| 伊人久久噜噜噜躁狠狠躁| 精品视频在线观看日韩| 国产成人av免费在线观看| 美女日韩在线中文字幕| 99视频日韩| √天堂资源地址在线官网| 一区二区视频在线看| 已婚少妇美妙人妻系列| 91麻豆精品激情在线观看最新 | 久久国产在线观看| 久色成人在线| 国外成人在线视频网站| 成人午夜影视| 欧美日韩国产精品一区二区不卡中文 | 可以直接看的黄色网址| 天堂在线一区二区| 国产美女精品久久久| 麻豆影院在线观看| 欧美中文字幕一区二区三区亚洲| 色综合久久五月| 欧美在线三级| 国产在线精品一区免费香蕉 | 毛片精品免费在线观看| 中日精品一色哟哟| 久久久一区二区三区捆绑**| 久久精品无码中文字幕| 日本免费一区二区视频| 久久精品99国产精品酒店日本| 7799精品视频天天看| 99久久久无码国产精品| 天堂а√在线中文在线| 国产精品久一| 美女福利精品视频| 国产精品久久久久久免费免熟| 国产精品女上位| 亚洲色图 在线视频| 国产精品自拍区| 日本成人在线视频网址| 偷拍自拍在线| 欧美性猛交99久久久久99按摩| 亚洲妇女无套内射精| 一区二区电影在线观看| 91九色单男在线观看| 成人在线播放免费观看| 美女隐私在线观看| 亚洲人吸女人奶水| www,av在线| 亚洲v在线看| 91久久久久久久一区二区| 日本中文字幕在线2020| 欧美人动与zoxxxx乱| 国产三级精品三级观看| 精品一区二区免费在线观看| 在线观看日韩片| 国产色99精品9i| 欧美二区在线播放| 秋霞欧美在线观看| 欧美性猛交xxxx免费看漫画 | 国产欧美中文在线| 成 人 黄 色 小说网站 s色| 国产精品成人一区二区不卡| 成人激情综合网| 黄色美女视频在线观看| 日韩电影中文字幕在线观看| 精品国产午夜福利| 国产精品初高中害羞小美女文| 最新免费av网址| 欧美日本久久| 欧美国产一二三区| 国产成人77亚洲精品www| 另类色图亚洲色图| 色窝窝无码一区二区三区成人网站| 精品久久久久人成| 日本成人免费视频| 国产精品一区二区x88av| 欧美日韩福利在线| 精品久久成人| http;//www.99re视频| 性欧美又大又长又硬| 伊人久久久久久久久久久| 国产麻豆免费观看| 午夜不卡av在线| 国产精品一区二区亚洲| 成人免费视频一区| 手机在线成人免费视频| 伊人激情综合| 亚洲午夜激情| 欧美电影免费网站| 国产欧美亚洲视频| 乱人伦视频在线| 久久激情五月丁香伊人| 婷婷婷国产在线视频| 欧美精品第1页| 九九热在线免费观看| 自拍偷拍欧美激情| 成人在线一级片| 福利电影一区二区| 国产精品自拍视频在线| 国产欧美一区二区三区国产幕精品| 亚洲一区二区精品在线| 欧美在线导航| 亚洲精品免费在线视频| 日韩影片中文字幕| 欧美精品久久久久久久| 日本高清在线观看wwwww色| 日韩精品视频免费在线观看| 国产精品亚洲lv粉色| 欧美午夜xxx| 国产高清在线免费观看| 国产精品毛片无遮挡高清| 手机在线看片日韩| 成人免费av资源| 中文字幕avav| 国内欧美视频一区二区| 国产又大又黄又粗的视频| 99国产精品| 黄色一级片黄色| 中文乱码免费一区二区三区下载| 日韩中文一区二区三区| 色先锋久久影院av| 韩国成人动漫在线观看| 北条麻妃一区二区三区在线观看| 成人有码在线播放| 九九热这里有精品| 国产精品美女在线| 香蕉成人av| 4p变态网欧美系列| 女人让男人操自己视频在线观看 | 日韩视频免费播放| 中国成人一区| 中文字幕精品在线播放| 99久久亚洲精品蜜臀| 亚洲成人18| 色喇叭免费久久综合网| 一区二区三区欧美在线| 区一区二视频| 伊甸园精品99久久久久久| 郴州新闻综合频道在线直播| 日韩福利影院| 精品视频免费在线观看| 日韩动漫在线观看| 久久影院100000精品| 色一情一乱一伦一区二区三欧美| 国产一卡不卡| 亚洲精品日韩在线观看| 婷婷另类小说| 麻豆一区二区三区在线观看| 亚洲人体av| 免费高清一区二区三区| 亚洲日产国产精品| 日本毛片在线免费观看| 久久亚洲综合| 欧美大尺度做爰床戏| 久久综合综合久久综合| 一级做a爱视频| 高清视频一区二区| 制服丝袜第二页| 国产日韩在线不卡| www.97视频| 亚洲一区日韩精品中文字幕| 日本在线视频免费观看| 色乱码一区二区三区88| 97精品人妻一区二区三区香蕉| 欧美一区二区三区在线看| 欧美 日韩 国产 成人 在线| 亚洲精品成人av| 8888四色奇米在线观看| 久热精品视频在线观看一区| 国产探花在线观看| 国产97在线视频| 久久久久久爱| 麻豆成人av| 久久激情电影| 成人在线播放网址| 日精品一区二区| 日本一本在线视频| 26uuu亚洲综合色欧美| 久久久久99精品成人| 亚洲美女免费在线| 日本中文字幕第一页| 欧美乱妇15p| 天天干天天操av| 日韩在线视频一区| 老牛影视精品| 成人有码在线视频| 综合综合综合综合综合网| 99热一区二区三区| 亚洲综合另类| 伦伦影院午夜理论片| 久久精品亚洲国产奇米99| 欧美一区二区三区爽爽爽| 岛国精品视频在线播放| 一区二区三区日| 日韩成人性视频| av在线看片| 国产精品第10页| 欧洲亚洲视频| 精品一区二区三区毛片| 日韩电影一区二区三区四区| 国产大学生av| ●精品国产综合乱码久久久久 | 日韩精品免费专区| 激情小说欧美色图| 成人免费一区二区三区在线观看| 毛片视频网站在线观看| 91精品国产欧美日韩| 久久久久久久久亚洲精品| 久久久久国产精品一区| 亚洲精品成a人ⅴ香蕉片| 欧洲亚洲一区二区| 亚洲毛片在线| 色哺乳xxxxhd奶水米仓惠香| 黄色片在线免费| 久久精品国产久精国产| 成人免费无码大片a毛片| 国产精品大尺度| 一级片免费在线播放| 欧美成人精品高清在线播放| 国产精品一二三区视频| 97香蕉超级碰碰久久免费软件 | 亚洲三级网站| 熟妇无码乱子成人精品| 欧美国产日产图区| 亚洲欧美偷拍一区| 亚洲精品久久久久久久久| 男女免费观看在线爽爽爽视频| 国产免费一区视频观看免费| 九九视频精品全部免费播放| 可以在线看的av网站| 国产成人免费视频一区| 黑人と日本人の交わりビデオ| 欧美视频在线免费| 污污视频在线免费看| 久久亚洲精品国产亚洲老地址| 成人在线视频观看| 色狠狠久久av五月综合| 日韩成人精品在线观看| 一区二区伦理片| 91国偷自产一区二区开放时间 | 国产欧美精品一区| www亚洲视频| 日韩精品中文字幕在线播放| 华人av在线| 久久综合九色欧美狠狠| 国产亚洲高清视频| 中文字幕丰满孑伦无码专区| 亚洲成a天堂v人片| 婷婷国产在线| 国产精品99久久久久久www| 国产日产精品一区二区三区四区的观看方式 | 成人精品久久久| 亚州av乱码久久精品蜜桃| 91蝌蚪视频在线| 亚洲一二三四在线观看| 神马午夜电影一区二区三区在线观看 | 麻豆传媒一区二区| 久久美女性网| 国产精品18在线| 精品少妇一区二区三区| 美女av在线免费看| 日韩欧美亚洲日产国| 免费观看日韩av| 日本在线一级片| 亚洲国产精品久久久| 91久久国产综合久久91猫猫| 日韩久久精品一区二区三区| 久久精品国内一区二区三区| 国产一二三区精品| 亚洲大尺度美女在线| 巨茎人妖videos另类| 尤物国产精品| 成人激情av网| 亚洲性猛交富婆| 欧美理论电影在线播放| 欧美日韩一区二区三区在线电影 | 日韩激情在线播放| 亚洲最新中文字幕| 精品视频一二| 欧美成人xxxxx| 亚洲日本欧美天堂| 色视频在线看| 91视频免费在线| 亚洲欧美网站| 日韩国产第一页| 亚洲精品一区二区在线| 国产精品日本一区二区三区在线| 青青青青草视频| 中文字幕在线观看一区二区| 人妻少妇精品无码专区久久| 国产精品91在线观看| 欧美激情第二页| 无码国产69精品久久久久同性| 91.com视频| 在线观看欧美日韩电影| 最近免费观看高清韩国日本大全| aaa国产一区| 国产又粗又猛又黄又爽| 青青青国产精品一区二区| 午夜精品偷拍| 日本精品久久久久中文|