使用FUTURE 中的訊息避免計劃排程的批處理作業 - CodeOpinion
有些人稱它為cron作業,計劃任務,或批處理作業。不管你怎麼稱呼它,它是一個定期執行的程式,檢視資料庫的狀態,以確定對它發現的各種記錄採取的一些具體行動。
如果你處理過這個問題,你可能知道這可能是一場噩夢,尤其是失敗的情況。
避免批處理工作
你可以避免批量作業,並通過告訴你的系統在FUTURE 做一些事情,來擁有較小的工作單位的隔離。利用支援延遲交付的佇列就是一個例子,你可以完成這個任務。
工作負載將在不同的時間段被平滑化,並提供隔離,因此你可以在單個工作層面上處理故障。
在下面的線上訂單的例子中,這意味著一旦訂單被預訂,並且物品被從貨架上取走,我們就會發出一個 "過期預訂 "的訊息,並延遲7天交貨。7天后,我們將處理該 "過期預訂 "資訊。如果訂單已經完成,這個過程只是提前退出。如果還沒有完成,它就會進行信用卡退款,並更新資料庫,將訂單設定為取消。
public class ReserveOrderHandler : IHandleMessages<ReserveOrder> { private readonly Reservation _reservation; public ReserveOrderHandler(Reservation reservation) { _reservation = reservation; } public async Task Handle(ReserveOrder message, IMessageHandlerContext context) { if (_reservation.Reserve(message.OrderId)) { var expireOptions = new SendOptions(); expireOptions.DelayDeliveryWith(TimeSpan.FromDays(7)); await context.Send(new ExpireReservation { OrderId = message.OrderId }, expireOptions); await context.Publish(new OrderReserved { OrderId = message.OrderId }); } } } |
詳細點選標題
相關文章
- 批處理作業排程-分支界限法
- Java後端開發中的任務排程:使用Spring Batch實現批處理Java後端SpringBAT
- 基於任務排程的企業級分散式批處理方案分散式
- 作業系統4——處理機排程與死鎖作業系統
- 如何使用Rust的gaffer實現優先順序的微批處理排程器 - njkRust
- Oracle排程作業引起的空間驟增問題處理記錄Oracle
- Android中的非同步訊息處理機制Android非同步
- 使用Kafka分割槽擴充套件Spring Batch大資料排程批處理 – ArnoldKafka套件SpringBAT大資料
- java當中的批處理Java
- JDBC當中的批處理JDBC
- oracle使用DBMS_SCHEDULER排程作業Oracle
- 使用 Kafka 和 Debezium 排程數百萬條訊息 - YotpoKafka
- 3.1處理機排程概述
- Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業ApacheHadoop
- 2.2.1 處理機排程的概念及層次
- 作業系統課程設計——處理機和程式排程演算法及記憶體分配回收機制作業系統演算法記憶體
- LOTO示波器動作程式設計功能(命令批處理)程式設計
- 作業系統精髓設計原理 程式排程作業系統
- KafkaConsumer對於事務訊息的處理Kafka
- Dart中的Future使用Dart
- Kafka中避免重複訊息的5種有效方法Kafka
- 猿考研之作業系統篇二(處理機排程)作業系統
- 實現Quartz.NET的HTTP作業排程quartzHTTP
- MQ收到無序的訊息時如何進行業務處理MQ行業
- 分析執行計劃優化SQLSQL語句處理的過程(轉)優化SQL
- python中PCA的處理過程PythonPCA
- Windows批處理中的變數和值Windows變數
- Kafka中消費者延遲處理訊息Kafka
- 計算機作業系統處理機排程讀後感—–關於程式概念的剖析。從RING3到RING0(32位作業系統)計算機作業系統
- MPLS RSVP訊息處理——VecloudCloud
- RocketMQ的事務訊息處理【half-message】MQ
- 使用寶塔計劃任務啟動laravel排程器Laravel
- [從原始碼學設計]螞蟻金服SOFARegistry之訊息匯流排非同步處理原始碼非同步
- 通過改變業務模型的預留模式避免分散式事務 - CodeOpinion模型模式分散式
- Windows 批處理之DATE命令的使用方法Windows
- Apache Beam,批處理和流式處理的融合!Apache
- 如何用 Golang 的 channel 實現訊息的批量處理Golang
- 如何用 Golang 的 channel 實現訊息的批次處理Golang