使用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 }); } } } |
詳細點選標題
相關文章
- 批處理作業排程問題
- 批處理作業排程-分支界限法
- 【作業系統】--處理器排程作業系統
- 基於任務排程的企業級分散式批處理方案分散式
- 作業系統(5)處理器排程管理作業系統
- 作業系統4——處理機排程與死鎖作業系統
- Oracle排程作業引起的空間驟增問題處理記錄Oracle
- 如何使用Rust的gaffer實現優先順序的微批處理排程器 - njkRust
- 三、訊息的可靠處理
- java當中的批處理Java
- JDBC當中的批處理JDBC
- 批處理中的符號符號
- 批處理中的for詳解
- Looper中的訊息佇列處理機制OOP佇列
- VCL中訊息處理初探 (轉)
- 作業系統(Linux)--按優先數排程演算法實現處理器排程作業系統Linux演算法
- php ActiveMQ的傳送訊息,與處理訊息PHPMQ
- VB與VC混合程式設計中處理訊息的方法 (轉)程式設計
- oracle使用DBMS_SCHEDULER排程作業Oracle
- Android中的非同步訊息處理機制Android非同步
- MFC應用程式中處理訊息的順序
- 使用 Kafka 和 Debezium 排程數百萬條訊息 - YotpoKafka
- 使用Kafka分割槽擴充套件Spring Batch大資料排程批處理 – ArnoldKafka套件SpringBAT大資料
- Oracle事件驅動的排程作業Oracle事件
- Android 5.0的排程作業JobSchedulerAndroid
- C#的訊息處理方法 (轉)C#
- 批處理中的for詳解(轉載)
- 關於批處理中的變數變數
- LOTO示波器動作程式設計功能(命令批處理)程式設計
- 3.1處理機排程概述
- IOS 訊息推送處理iOS
- 使用 Java API 處理 WebSphere MQ 大訊息JavaAPIWebMQ
- windows批處理教程-黃棒清-專題視訊課程Windows
- Kafka中避免重複訊息的5種有效方法Kafka
- 作業排程模擬程式
- Hadoop - Azkaban 作業排程Hadoop
- 作業系統精髓設計原理 程式排程作業系統
- Apache Oozie 教程:使用 Oozie 排程 Hadoop 作業ApacheHadoop