簡體   English   中英

使用AMQP偵聽器的春季批處理

[英]spring batch with AMQP Listener

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


}

}

您可以使用Spring Batch IntegrationJobLaunchingGateway為每個消息啟動一個作業。

但是,如果希望多個消息組成一個“批”,則應在RabbitTemplate中使用ItemReaderreceive()要作為批處理(而不是偵聽器)的消息。

我用一個偵聽器調用該工作,並且工作正常:

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


}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM