精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

在线看片中文字幕| 成人免费观看视频在线观看| 国产免费无遮挡| 自由日本语亚洲人高潮| 精品裸体舞一区二区三区| 日韩伦理在线免费观看| 久青草国产在线| 精品亚洲成a人| 国内精品久久久久伊人av| 中文字幕xxx| 日韩国产大片| 婷婷夜色潮精品综合在线| 日韩精品第一页| a级片在线免费看| 国产精品一国产精品k频道56| 亚洲天堂日韩电影| 在线观看一区二区三区视频| 蜜桃视频动漫在线播放| 国产精品成人网| 精品一区二区三区日本| 亚洲自拍偷拍另类| 国产日产高清欧美一区二区三区| 日韩专区中文字幕| 欧美一区二区三区成人精品| 国产精品日本一区二区不卡视频 | 狠狠色丁香久久综合频道| 亚洲欧美国内爽妇网| 欧美老女人bb| 国产精品诱惑| 欧美日韩国产中文字幕| 最近看过的日韩成人| 欧美大片aaa| 成人小视频免费在线观看| 国产精品亚洲欧美导航| 久久亚洲精品国产| 欧美日韩1区| 色yeye香蕉凹凸一区二区av| 熟女少妇一区二区三区| 国产精品毛片av| 91精品国产一区二区人妖| 91蝌蚪视频在线观看| 日本不卡1234视频| 亚洲高清免费视频| 蜜桃视频一区二区在线观看| 秋霞午夜在线观看| 欧美国产日韩亚洲一区| 蜜桃久久影院| 五月婷婷丁香六月| 成人午夜在线播放| 国产 高清 精品 在线 a| 国产口爆吞精一区二区| 美日韩一区二区三区| 国产成人aa精品一区在线播放 | 色综合欧美在线视频区| 国产69精品久久久久久久| 嫩草在线视频| 中文字幕亚洲区| 亚洲免费在线精品一区| 国产精品视频一区二区久久| 久久久久久久综合| 欧美亚洲免费在线| 久久视频www| 久久久久久久网| 欧美日韩高清在线一区| 日本私人网站在线观看| 久久―日本道色综合久久| 久久久免费看| 欧洲视频在线免费观看| 久久综合久久久久88| 久久亚洲午夜电影| 日本aaa在线观看| 久久久一区二区三区| 日本免费一区二区三区| 超碰在线影院| 亚洲少妇最新在线视频| 少妇高潮大叫好爽喷水| 2024短剧网剧在线观看| 亚洲成年人影院| 国产精品视频一区二区三区四区五区| 日韩av影片| 在线观看亚洲一区| 亚洲怡红院在线| 欧洲一区在线| 亚洲精品电影网站| av男人的天堂av| 99久久亚洲精品| 久久999免费视频| 久久一区二区三区视频| 青青草国产精品97视觉盛宴 | 亚洲 欧美 日韩 在线| 蜜桃视频一区二区| 91亚洲精品久久久| 黄色三级网站在线观看| 久久久久久久久久久久久久久99 | 2025韩国理伦片在线观看| 亚洲免费看片| 亚洲国产又黄又爽女人高潮的| 国产精品成人一区二区三区电影毛片| 色呦哟—国产精品| 久久久久久久av| 91porny九色| 国产激情一区二区三区四区 | 国产女18毛片多18精品| 北岛玲一区二区三区四区| 日韩久久在线| 国产精品一区hongkong| 色噜噜狠狠成人中文综合| www.久久91| 国产成人福利av| 日韩在线视频免费观看高清中文| 麻豆视频在线观看| 日本欧美韩国一区三区| 国产乱子伦精品| 求av网址在线观看| 日韩欧美aaa| 曰本三级日本三级日本三级| 欧美综合另类| 91爱视频在线| 国产区精品在线| 久久久91精品国产一区二区精品 | 久久精品一区二区免费播放| 一区二区三区午夜视频| 国产精品久久久久久久久久免费 | 最新国产在线拍揄自揄视频| 在线观看免费成人| 黄色片视频免费观看| 你懂的国产精品永久在线| 国产福利视频一区二区| 人妻丰满熟妇av无码区hd| 亚洲色图视频网| 国产小视频精品| 欧美色图婷婷| 国外成人性视频| 国产草草影院ccyycom| 国产精品免费久久久久| 日本精品免费在线观看| a看欧美黄色女同性恋| 久久亚洲综合国产精品99麻豆精品福利| 精品免费囯产一区二区三区| 成人看片黄a免费看在线| 男女h黄动漫啪啪无遮挡软件| 神马久久资源| 亚洲码在线观看| 国产一区二区三区影院| 成人午夜激情在线| 成人在线免费高清视频| 精品一区91| 日韩一区二区三区在线播放| 中文字幕人妻一区二区在线视频 | 91精品啪aⅴ在线观看国产| 成人在线观看免费| 91国产成人在线| 鲁大师私人影院在线观看| 在线日韩电影| 国产精品一区二区三区在线观| 中中文字幕av在线| 91精品国产麻豆国产自产在线| 亚洲精品自拍视频在线观看| 久久99热99| 日韩最新中文字幕| 精品国产亚洲一区二区三区| 欧美成年人视频网站| va视频在线观看| 夜夜嗨av一区二区三区网页 | 韩国av一区二区三区在线观看| 亚洲制服欧美久久| 精品午夜视频| 久久久人成影片一区二区三区观看| 国产综合在线播放| 岛国av一区二区在线在线观看| 精品无码人妻一区| 蜜桃精品在线观看| 中国一级黄色录像| 97se亚洲| 欧美做受高潮电影o| 久久av少妇| 欧美色图免费看| 天海翼在线视频| 国产成人av电影在线播放| 欧美深夜福利视频| 一区二区美女| 国产精品视频成人| 亚洲综合伊人久久大杳蕉| 亚洲精品一区二区在线观看| 国产剧情在线视频| **欧美大码日韩| 尤物网站在线观看| 日韩国产欧美在线观看| 熟女视频一区二区三区| 日本中文字幕在线一区| 国产精品视频中文字幕91| gogo在线观看| 日韩精品视频免费专区在线播放| 五月激情丁香网| 亚洲精品精品亚洲| 国产熟妇久久777777| 精品一区二区三区日韩| 国产一区二区四区| 日韩大片在线播放| 韩国成人动漫在线观看| 国精品产品一区| 久久久久久久久久久人体| 黄色片免费在线| 日韩视频免费直播| 自拍偷拍校园春色| 亚洲一区视频在线| 免费看日本黄色片| 成人av在线播放网址| 麻豆三级在线观看| 日韩午夜在线| 日本一级淫片演员| 自拍视频一区| 99超碰麻豆| 欧美黄色网络| 欧美一区二区三区免费视| 国产理论在线观看| 亚洲最大在线视频| 午夜av免费在线观看| 日韩欧美国产一区二区在线播放| 天天爱天天做天天爽| 午夜精品福利一区二区蜜股av| 91免费公开视频| 国产欧美日韩三区| 久久国产精品无码一级毛片| 国产99精品国产| 午夜免费看视频| 久久成人免费| 欧美一级视频免费看| 911精品美国片911久久久| 欧美主播一区二区三区美女 久久精品人| 精品入口麻豆88视频| 国产精品视频导航| 美女100%一区| 欧美在线视频观看| av电影在线免费| 欧美精品手机在线| 黄色精品在线观看| 日韩中文字幕亚洲| 一级毛片视频在线| 中文字幕一精品亚洲无线一区 | av在线播放成人| 久久无码人妻一区二区三区| 麻豆成人91精品二区三区| 激情内射人妻1区2区3区| 亚洲欧美不卡| 久久网站免费视频| 亚洲一区二区网站| 欧美一区二区三区爽大粗免费| 伊人成人在线视频| 丝袜人妻一区二区三区| 国产精品v日韩精品v欧美精品网站 | 中老年在线免费视频| 久久久久亚洲精品成人网小说| jizz性欧美| 久久精品电影网站| 精品美女在线观看视频在线观看| 最近2019中文字幕一页二页| 国产特黄在线| 影音先锋日韩有码| 在线激情网站| 久久视频在线直播| 四虎影视成人| 欧美激情乱人伦| 国产三级伦理在线| 91国语精品自产拍在线观看性色| 妞干网免费在线视频| 日本一区二区三区四区视频| 亚洲www.| 91久久久久久国产精品| 亚洲一区二区免费在线观看| 超碰国产精品久久国产精品99| 98视频精品全部国产| 国产一区福利视频| 国产一区网站| 偷拍盗摄高潮叫床对白清晰| 欧美1区2区3区| 成人黄色av片| 免费不卡在线视频| 香蕉视频1024| wwww国产精品欧美| 秋霞欧美一区二区三区视频免费| 亚洲激情成人在线| 中文字幕视频网站| 制服丝袜亚洲色图| 视频一区二区免费| 色综久久综合桃花网| 日本无删减在线| 国产精品成av人在线视午夜片| 成人亚洲精品| 精品久久久久久一区| 色135综合网| 国产成人在线小视频| 天堂成人免费av电影一区| www.色就是色.com| 91亚洲精品久久久蜜桃| 国产成人在线网址| 五月天一区二区| 一道本在线视频| 日韩电影在线观看永久视频免费网站| 高清性色生活片在线观看| 欧美成人激情视频| 日韩中文影院| 成人91视频| 欧美色图一区| www.日本在线播放| 精品一区二区三区欧美| 香蕉视频黄色在线观看| 亚洲精选视频免费看| 自拍偷拍校园春色| 精品第一国产综合精品aⅴ| 尤物视频在线免费观看| 97人人模人人爽人人喊中文字| 亚洲欧洲二区| 欧美一区二区三区电影在线观看| 欧美精品啪啪| 中文字幕第38页| 2020国产精品自拍| 欧美日韩中文视频| 欧美一级黄色大片| av大全在线免费看| 日韩美女主播视频| 国产一级成人av| 中文字幕色呦呦| 久久国内精品视频| 日韩一级av毛片| 欧美视频中文在线看| 亚洲精品久久久狠狠狠爱| www.日韩av.com| 亚洲天堂1区| 欧美大陆一区二区| 99国产精品久久久久久久| 91av免费观看| 亚洲情趣在线观看| 91精品人妻一区二区三区果冻| 亚洲欧美精品中文字幕在线| а√天堂中文资源在线bt| 国产aⅴ精品一区二区三区黄| 天天射—综合中文网| 日本黄大片一区二区三区| 国产日韩欧美一区二区三区乱码| 97久久久久久久| 亚洲精品二三区| 99久久精品免费看国产小宝寻花| av免费观看久久| 黑丝一区二区三区| 色哟哟无码精品一区二区三区| 一区二区成人在线| 国产黄频在线观看| 九九热精品视频国产| 蜜桃精品视频| 超薄肉色丝袜足j调教99| 国产麻豆精品一区二区| 中文字幕影音先锋| 日韩三区在线观看| 国产精品—色呦呦| 国内精品二区| 校园激情久久| brazzers精品成人一区| 日本乱码高清不卡字幕| 六十路在线观看| 国产精品极品在线| 色综合久久一区二区三区| 992kp免费看片| 亚洲一区二区中文在线| 六月丁香综合网| 57pao成人永久免费视频| 激情综合网五月| 自拍偷拍21p| 亚洲精品老司机| 五月色婷婷综合| 国产精品mp4| 香蕉国产精品| av天堂一区二区| 色哟哟一区二区三区| 日本视频在线观看| 99热在线国产| 久久精品30| 国产麻豆a毛片| 亚洲成人av资源网| 欧美成人精品三级网站| 五月天色婷婷综合| 99久久久国产精品| 伊人精品在线视频| 久久久噜噜噜久久久| 欧美日韩一二| aaaaa黄色片| 91豆麻精品91久久久久久| 欧美边添边摸边做边爱免费| 国产精品v欧美精品v日韩| 久久青草久久| 欧美另类视频在线观看| 日韩精品极品视频免费观看| 久久天天久久| 国产av国片精品| 国产精品网站在线播放| 狠狠躁夜夜躁av无码中文幕| 国产成人精品久久二区二区91| 综合天堂久久久久久久| 日本少妇高潮喷水xxxxxxx| 欧美一二三区在线|