0

我想将 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


}

}

4

2 回答 2

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();
    }


}
于 2014-10-11T19:09:22.990 回答
0

您可以使用Spring Batch IntegrationJobLaunchingGateway为每条消息启动一个作业。

但是,如果您希望多条消息组成一个“批处理”,则应RabbitTemplateItemReaderreceive()作为批处理(而不是侦听器)处理的消息中使用 a。

于 2014-10-11T11:52:13.783 回答