2016-04-21 28 views
1

是否有可能JSR 352步分區 - 分區重新啓動手動

  1. 監視每個分區
  2. 重新啓動它們手動/編程時,他們失敗的線程/線程。

從我讀過的內容中,我瞭解到批處理框架爲我們處理它。但是,如果我想自己做。我該怎麼做?

我正在IBM Webshpere Liberty上使用IBM的JSR 352實現。

+0

因此,您希望能夠在單個作業執行中重新啓動某個步驟的各個分區而無需重新啓動整個作業? –

+0

是的,是否有可能這樣做? –

回答

2

批處理框架確實爲您處理這些問題。它記錄每個分區的最終狀態(例如,COMPLETEDFAILED),並且在重新啓動作業時它將僅重新啓動那些分區,其中失敗(默認情況下)。

但是,你只能直接操作工作。因此,在一般情況下,你會通過等待,直到所有其他分區練完(竣工失敗),然後重新啓動工作重新啓動與失敗分區工作,此時失敗分區將重新執行。

因此它的設計目的是讓儘可能多的當前執行完成,而不是快速失敗。

如果是你所真正需要的是剛剛儘快重新啓動每個分區,而無需等待所有分區完成和完成作業,你可能想看看在批重試功能。

E.g.回滾和重試SQLTransactionRollbackException您可以在XML通過這樣做聲明:

 <chunk retry-limit="3"> 
      <reader ref="..."> 
      ... 
      <retryable-exception-classes> 
      <include class="java.sql.SQLTransactionRollbackException"/> 
      </retryable-exception-classes> 
     </chunk> 

是否有此配合早已進入你的使用情況?如果沒有,會有興趣聽到爲什麼不。

+0

謝謝!所以如果分區失敗了,如果我等待作業完成並重新啓動,那麼只有失敗的分區纔會運行? 用例是,如果某個分區失敗,並且是由於數據的某些問題(重複的記錄等),我不希望分區保持自己重試。我想要的是修復數據並運行該分區。所以現在據我所知,我會讓這個作業失敗,當它重新啓動時,只有失敗的分區會運行。 另外如果我想再次運行完整的作業而不僅僅是失敗的分區? –

+0

所以這聽起來像一個普通的舊工作重新啓動是你想要的,它聽起來像**重試**可能不是你在尋找的事實。 –

+0

也許你可以將你關於如何「再次運行完整作業」的問題分離出一個新的問題?可能很難將答案納入評論,而其他人則更容易將其作爲單獨的問題進行跟蹤。 –