【发布时间】:2018-09-05 13:23:28
【问题描述】:
我正在使用rabbit-messaging Queue和Spring batch作为组合。生产者服务将消息发布到队列。在这里,我的代码是消费者,我使用 Spring Batch 来读取、处理和写入。在这里,当消息推送到队列时,我必须触发作业(意味着没有控制器端点)。为此,我正在使用 @RabbitListener("queue_Name) 它将在新消息发布时进行侦听并接收消息。下面是代码。
@EnableRabbit
public class Eventscheduler {
@Autowired
Job csvJob;
@Autowired
private JobLauncher jobLauncher;
//@Scheduled(cron="0 */5 * ? * *")
@RabbitListener(queues ="BulkSolve_GeneralrequestQueue")
public void trigger(){
Reader.batchstatus=false;
Map<String,JobParameter> maps= new HashMap<String,JobParameter>();
maps.put("time", new JobParameter(System.currentTimeMillis()));
JobParameters jobParameters = new JobParameters(maps);
JobExecution execution=null;
try {
//JobLauncher jobLauncher = new JobLauncher();
execution=jobLauncher.run(csvJob, jobParameters);
} catch (JobExecutionAlreadyRunningException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JobRestartException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JobInstanceAlreadyCompleteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JobParametersInvalidException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("JOB Executed:" + execution.getStatus());
}
}
我的问题是,我已经在阅读已发布的消息,那么我如何将该消息 pojo 传递给 ItemReader?在触发 job.SO 之前,我的 ItemReader 将读取该消息。谁能帮助我指导如何实现这一目标?
谢谢,
【问题讨论】:
标签: spring-batch