我想将spring batch与RabbitMQ监听器一起使用
收到邮件后,将调用第一步并在每次邮件收件后重复处理
这是我的倾听者: 公共类MyMessageListener实现MessageListener {
@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 :(得分:0)
您可以使用Spring Batch Integration和JobLaunchingGateway
为每封邮件启动作业。
但是,如果您希望多封邮件构成“批量”,则应在RabbitTemplate
至ItemReader
内使用receive()
要作为批处理处理的邮件(而不是听众)。
答案 1 :(得分: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();
}
}