簡體   English   中英

如何在 springboot 應用程序中管理更新

[英]How to manage updates in a springboot application

我正在開發一個 springboot 應用程序,我必須管理一個特定的用例。

假設我們有一個管道,其中包含一個 id 和一個數量的訂單被來自 IBM/AS400 的 kafka 主題消費。

此訂單將存儲在數據庫中,並在 Springboot 中用於應用程序上層的聚合。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Order implements Serializable {
        private string id;
        private String amount;
}

假設我們有 2 個訂單,一個金額為 500,另一個金額為 200。

這兩個訂單將用於計算最終金額,因此最終金額為 700。

假設我們將第一個訂單從 500 -> 1000 更改。

第一個想法是使用getOne(id) + save來更新。

所以它會是:

String newAmount = OrderRepository.getOne(1);
orderToUpdate.setAmount(newAmount);
orderRepository.save(orderToUpdate);

由於訂單是在應用程序的上層使用的,更新這個訂單會使用10年的歷史計算,需要很長時間,請問有什么辦法可以解決這個問題嗎?

如果您需要更多詳細信息,請告訴我!

在此先感謝您的幫助

如果您想完全刪除聚合,並且我不知道一天聚合發生多少次,您可以執行以下操作

假設

  1. 每天只執行一次聚合
  2. 聚合值存儲在數據庫中並且是線程安全的

腳步

  1. 取新金額,求上一金額與新金額的差額
  2. 將差值(作為實數)推送到隊列中
  3. 堅持新的金額
  4. 從具有已更改訂單值的有序列表的隊列中,將數學一一應用於持久聚合值。
  5. 在每次更新聚合值后審核更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM