2014-10-11 67 views
0

我想使用Spring Batch的一个RabbitMQ的听众春天批次AMQP监听

当收到一个消息,第一步将被调用,每个消息reciption

后重复治疗这是我的听众: 公共类MyMessageListener实现消息监听{

@Override 
public void onMessage(Message msg) { 
    String messageBody= new String(msg.getBody()); 
    logger.info("Listener received message {}", messageBody); 
    Gson gson = new Gson(); 


    //call spring batch step to Generate report 
    //TODO 


} 

}

回答

0

您可以使用Spring Batch IntegrationJobLaunchingGateway为每条消息启动作业。然而,如果你想让多个消息组成一个“批处理”,你应该在ItemReader到之内使用RabbitTemplate作为批处理(而不是监听器)处理的消息。

0

我所说的工作在监听器,它很好地工作:

@Override 
void onMessage(Message msg) { 

    JobLauncher jobLauncher = (JobLauncher) appContext.getBean("jobLauncher"); 
    Job job = (Job) appContext.getBean("rapportJob"); 

    try { 
     JobParameters jobParameters = new JobParametersBuilder() 
             .addLong("time",System.currentTimeMillis()) 
             .toJobParameters(); 
     JobExecution execution = jobLauncher.run(job, jobParameters); 
     System.out.println("Exit Status : " + execution.getStatus()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 


}