我正在寫一個業務邏輯在Tasklet中,我發送消息到外部systemA的隊列之一,然後停止使用operator.stop()方法的工作(有時反應來得很晚,所以我通過停止彈簧批量工作來釋放系統資源)。春天批量數據庫沒有得到更新
只要我收到systemA的回覆,我需要再次從上次完成的作業重新啓動作業。
這就是我在tasklet中所做的。
public RepeatStatus execute(StepContribution stepCon, ChunkContext chunkCtx)
throws Exception {
JobOperator operator= (JobOperator)ApplicationContextProvider.getApplicationContext().getBean("jobOperator");
String msg = "some msg";
//Sending message to channel created using spring integration.
messageChannel.send(MessageBuilder.withPayload(msg).build());
//Stopping job with the job_exe_id 123
operator.stop(123);
ExitStatus es = new ExitStatus("MSG_SENT");
stepCon.setExitStatus(es);
return null;
}
,我現在面臨的問題是,一旦消息被髮送到系統A的隊列,在任何時候,我從SYSTEMA得到響應和Spring集成的服務激活被調用,由於某種原因春天批次DB永遠不會更新爲「已停止」,而是數據庫條目將作業的狀態顯示爲「正在停止」,因此我無法在服務激活器內重新啓動作業,因爲它仍處於「停止」狀態。
任何人都可以請讓我知道爲什麼春天的批量數據庫沒有得到「停止」狀態的狀態更新。
EDIT-我已經嘗試停止發送消息到SystemA的隊列之前的工作,但仍然彈簧BATCH數據庫沒有得到更新與「停止」狀態。