2014-03-28 3 views
1

나는 스프링 배치 작업을 가지고 있습니다. Spring Batch를 처음 접했고 CommandLineJobRunner를 통해 항상 호출되었습니다.스프링 배치 - 웹 서비스로 호출

org.springframework.batch.core.launch.support.CommandLineJobRunner spring-batch-myProject.xml SpringJobBean.MyProjectImportDataJob 

가 지금은 웹 서비스 (스프링 MVC) 내에서 내 일괄 작업을 호출 할 수 있습니다

이 내 전화는 모습입니다. 내 엔드 포인트에서 이것은 호출 호출입니다. if 문에서 배치 작업을 호출해야합니다. 어떻게하면 좋을까요? JobLauncher에 대해 읽었는데 ... 무엇을 출시 할지를 어떻게 말해야할지 모르겠습니다.

protected Object invokeInternal(Object aObj) throws Exception { 
    RunDataProcessingImportRequest request = (RunDataProcessingImportRequest) aObj; 

    RunDataProcessingImportResponse response = new RunDataProcessingImportResponse(); 
    if (request.getDataProcessingType().equals(PROJECT_TYPE)){ 

     response.setResultCd(1); 
    } else { 
     response.setResultCd(0); 
     response.setErrorCode(1l); 
     response.setErrorMessage("Incorrect process type"); 
    } 
    return response; 
} 

답변

1

답변은 실제로 사용중인 스프링 배치의 버전에 따라 다릅니다.

2.0.x 이상을 사용하는 경우 Spring Batch Admin을 사용하여/etc 작업을 시작/중지하기위한 REST 엔드 포인트를 제공 할 수 있습니다. 앱에 항아리를 추가하고 구성을 조금만하면됩니다.

2.2.x 이상의 버전을 사용하고 있고 Spring Batch Admin의 스냅 샷 버전을 사용하도록 허용 된 경우 위에서 언급 한 것과 동일하게 적용됩니다.

Spring Batch Admin 사용에 관심이 없다면, 자신 만의 엔드 포인트를 작성하고 거기에서 작업을 시작해야합니다. 그러나, (나는 아래의 코드를 테스트하지 않았습니다) 매우 사소한해야한다 : 위의 코드가 실행 할 수있는 기능을 제공하기 위해 두 개 이상의 직업을 가지고 가정

@Controller 
public class JobLaunchingController { 
    @Autowire 
    JobLauncher jobLauncher; 

    @Autowire 
    JobRegistry jobRegistry; 

    @RequestMapping("/launch") 
    public @ResponseBody JobExecution launch(
      @RequestParam(value="name", required=true) String name, 
      @RequestParam(value="params", required=false) String params) { 

     Job job = jobRegistry.getJob(name); 
     JobParametersBuilder paramsBuilder = new JobParametersBuilder(); 

     if(params != null) { 
      // parse job parameters 
     } 

     return jobLauncher.run(job, paramsBuilder.toJobParameters()); 
    } 
} 

. 그렇지 않다면 원할 경우 @AutowireJob 자체를 컨트롤러에 넣을 수 있습니다 (JobRegistry 대신).

현재 봄 REST 서비스에 대한 자세한 내용을보실 수 있습니다 : https://spring.io/guides/gs/rest-service/

당신은 여기 JobLauncher에 대한 자세한 읽을 수 있습니다 : 마지막으로 http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/launch/JobLauncher.html

을, 당신이 여기 섹션 4.6.2에서 JobRegistry에 대한 자세한 내용을보실 수 있습니다 : http://docs.spring.io/spring-batch/reference/html/configureJob.html

관련 문제