日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Batch可重启性

發布時間:2023/12/3 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Batch可重启性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,我要非常感謝Spring的優秀人員,他們花了無數時間來確保Spring Batch作業的可行性,以及發出重新啟動作業的神奇能力! 感謝您提供的這個優雅的工具集,它使我們能夠瀏覽大量數據集,同時使我們在跌倒時能夠擺脫塵埃!

在承認我還有很多東西要學習的同時,我想分享一下有關可重新啟動性方面的經驗教訓。 這篇文章將包括如何識別Spring Batch的Step&Job ExecutionContext的不正確使用,以及如何為Spring Batch編寫良好,有益的組件。

有狀態!

對于具有可變全局變量的bean,有狀態性基本上是幻想。

例如,拿一張一美元的鈔票。 它的值是恒定的,因此將被視為無狀態。 另一方面,以Google等股票為例; 價格波動,其價值將被視為可變(或有狀態)。

執行上下文

為了保持狀態,Spring使我們能夠同時訪問Step&Job的ExecutionContext ,以便我們可以處理需要跟蹤和正確完成工作的信息。

批處理代碼庫中有狀態的任何內容都會威脅到其可重新啟動性的可行性。 有狀態的處理器,讀取器,寫入器或批處理操作使用的任何東西都應視為處于危險之中。

從技術上講,我想任何可序列化的對象都可以隨時放入ExecutionContext中,但是我認為這是一種危險的思考方式。 ExecutionContext更新應以非常事務性的方式進行處理。

什么信息

我建議僅在此處保留原始/偽原始簡單值。 如果您想在晚上輕松入睡,我還建議僅通過ItemProcessor或使用@BeforeStep或@AfterStep注釋的方法來編寫這些值。

什么不應該發生?

不應在核心業務邏輯中引入和傳遞ExecutionContext。 上下文值不應在步驟執行過程中進行更新。 另外,您應該避免將可變的值持有者對象引入ExecutionContext,因為其引用很容易破壞事務邊界后面的值。

當我在代碼中看到這些類型的示例時,我認為它們對應用程序的可重新啟動性構成威脅,并拒絕證明該應用程序的可重新啟動性。

通常,沒有一種千篇一律的方法來確保您的工作代碼以確保正確處理有狀態信息的方式編寫。 但是,我將告訴您,您需要考慮以下問題:

  • 事務如何完成(分布式,分區,多線程等)
  • 如何跟蹤塊進度?
  • 您的讀物如何排序/分組?
  • 重新啟動時需要什么信息?

這是更新作業相關狀態信息的一般示例:

import org.springframework.batch.item.*; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /*This could be a reader, or a writer, or maybe a processor... you need to identify when and where it is appropriate to perform these tracking activities. Remember to think about restarts! */ @Component @StepScope public class FooComponent implements ItemStream{ // a perfectly acceptable way to read a value from an ExecutionContext from anywhere! @Value(“#stepExecutionContext[‘fooStatefulCount’]”) long statefulCount = 0; // a read count perhaps?public static final String KEY = "bar"; public void open(ExecutionContext cxt) throws ItemStreamException {cxt.put(KEY, statefulCount); } public void update(ExecutionContext cxt) throws ItemStreamException {cxt.put(KEY, statefulCount); } public void close() throws ItemStreamException {} }

如果您想要更全面的示例,請瀏覽AbstractItemCountingItemStreamItemReader中的open方法!

最后的想法

對于其他開發人員,我的最終建議是在編寫代碼時力求從根本上變得完全普通。 簡單性將使您對未來有所了解,隨后,企業主將珍惜您的禮物,該應用程序基本上沒有技術債務。

翻譯自: https://www.javacodegeeks.com/2017/04/spring-batch-restartability.html

總結

以上是生活随笔為你收集整理的Spring Batch可重启性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 奇米网一区二区 | 天天影视插插插 | 性欧美www| 99久久婷婷国产综合精品草原 | 色综合中文 | 91视频社区 | 久久国产夫妻 | 香蕉国产在线视频 | 美女福利在线观看 | 特黄一级片 | 黄色网页在线观看 | 绯色av一区二区 | 日本肉体xxxx裸体xxx免费 | 亚洲综合第一 | 久久人人草 | 国产九九热视频 | 日日夜夜操操 | 亚洲黄网在线 | 欧美性生交片4 | 男人的天堂你懂的 | 男人爽女人下面动态图 | 91大神福利视频 | 成人看片在线 | 今天最新中文字幕mv高清 | 奇米视频在线 | 无码人妻丰满熟妇区毛片18 | 人人干人| 国产一区二区欧美日韩 | 67194成人 | 国产乱人乱偷精品视频a人人澡 | 天天色天天射天天干 | 亚洲精选中文字幕 | 亚洲天堂av一区二区三区 | 播五月婷婷 | 国产美女精品久久久 | 动漫美女视频 | 外国电影免费观看高清完整版 | 黄色大全在线观看 | 国产一区精品久久 | 怡春院欧美 | 求个黄色网址 | 国产精品传媒在线观看 | 男人的天堂毛片 | 亚洲国产精彩视频 | 伊人影院久久 | 99久久精品国产毛片 | 国产污视频 | 国产欧美综合在线 | 久久天堂av综合合色蜜桃网 | 国产乱国产乱300精品 | 91成人短视频| 国产精品国产三级国产 | 国产一区二区三区四区 | 69xxxx国产 | 国产一区二区三区免费观看 | 五十路黄色片 | 人人妻人人澡人人爽精品 | 黄色成人在线网站 | 麻豆国产av超爽剧情系列 | 看国产黄色片 | 午夜不卡av | 中文字幕免费av | 欧美日韩亚洲一区二区 | 天天免费看av | 免费毛片一区二区三区久久久 | 中国人妖和人妖做爰 | 视频一区二区三区四区五区 | 欧美成人精品三级网站 | 日本午夜电影网站 | 猛男大粗猛爽h男人味 | 懂爱av| 国产精品伦子伦免费视频 | 黄色av网址在线 | 肉色超薄丝袜脚交一区二区图片 | 欧美天天爽 | 成人av在线网 | 无码免费一区二区三区免费播放 | 国产精品夜色一区二区三区 | av不卡免费在线 | 日韩欧美xxxx | 一级免费大片 | 欧美在线日韩 | 青青草成人免费视频 | 男男一级淫片免费播放 | 亚洲欧洲精品成人久久奇米网 | 国产精品国产精品国产专区不片 | 国产精品免费久久久久 | 欧美久久伊人 | 午夜激情福利在线 | 国产情侣av自拍 | 久久人人爽人人爽人人av | 草草影院最新地址 | 免费无遮挡在线观看视频网站 | 成人国产视频在线观看 | 影音先锋男人的天堂 | 波多野吉衣一二三区乱码 | www.欧美在线观看 | 亚洲a一区 | 成人免费视频国产在线观看 |