Spring batch spring批处理远程分区如何保持从机运行,监听mq

Spring batch spring批处理远程分区如何保持从机运行,监听mq,spring-batch,Spring Batch,我正在研究spring批处理远程分区。我想运行一个从机来监听activemq。然后运行一个master向activemq发送消息。但是当我运行java-jar-Dspring.profiles.active=slave app.jar时。它只是完成了,没有在jvm中运行。我如何保持slave运行,监听mq。有一个worker代码示例。当您启动此代码时,将从队列JMS中删除worker wait指令。我希望它能帮助你 @Profile("worker") @EnableBatchIntegrati

我正在研究spring批处理远程分区。我想运行一个从机来监听activemq。然后运行一个master向activemq发送消息。但是当我运行java-jar-Dspring.profiles.active=slave app.jar时。它只是完成了,没有在jvm中运行。我如何保持slave运行,监听mq。

有一个worker代码示例。当您启动此代码时,将从队列JMS中删除worker wait指令。我希望它能帮助你

@Profile("worker")
@EnableBatchIntegration
public class WorkerPartitioningConfig extends JmsWorkerConfig {

    // Bean declared inside @EnableBatchIntegration
    @Autowired
    public RemotePartitioningWorkerStepBuilderFactory workerStepBuilderFactory;

    private Integer chunkSize = 100;

    private String directoryTemp = "/data/temp";


   /**
     * Reader
     */
    @Bean
    @StepScope
    public FlatFileItemReader<Data> reader(@Value("# {stepExecutionContext['filename']}") String fileName) {
        return new FlatFileItemReaderBuilder<Data>()
                .name("readerData")
                .resource(new FileSystemResource(fileName))
                .targetType(Data.class)
                .delimited()
                .delimiter(",")
                .names(new String[]{"id", "text"})
                .encoding("UTF-8")
                .build();
    }

    /**
     * Writer
     */
    @Bean
    @StepScope
    public FlatFileItemWriter<Data> fileToWriter() {
        FlatFileItemWriter<Data> csv= new FlatFileItemWriterBuilder<Data>()
                .name("writer")
                .resource(new FileSystemResource(directoryTemp + "/data-out-" + StringHelper.getRandomString() + ".csv"))
                .delimited()
                .delimiter(";")
                .names(new String[]{"id", "text"})
                .encoding("UTF-8")
                .build();
        csv.setAppendAllowed(true);
        csv.setShouldDeleteIfExists(false);
        csv.setShouldDeleteIfEmpty(false);
        return csv;
    }

    /**
     * Worker step.
     */
    @Bean
    public Step workerStep() {
        return workerStepBuilderFactory.get("workerStep")
                .inputChannel(requests())
                .outputChannel(replies())
                .<Data, Data>chunk(chunkSize)
                .reader(reader(null))
                .processor(new UpperCaseProcessor())
                .writer(fileToWriter())
                .build();
    }
}
@Profile(“工人”)
@启用批处理集成
公共类WorkerPartitionConfig扩展了JmsWorkerConfig{
//在@EnableBatchIntegration内声明的Bean
@自动连线
公共远程分区workerStepBuilderFactory workerStepBuilderFactory;
私有整数chunkSize=100;
私有字符串directoryTemp=“/data/temp”;
/**
*读取器
*/
@豆子
@步进镜
公共FlatFileItemReader读取器(@Value(“#{stepExecutionContext['filename']}”)字符串文件名){
返回新的FlatFileItemReaderBuilder()
.名称(“readerData”)
.resource(新文件系统资源(文件名))
.targetType(Data.class)
.delimited()
.分隔符(“,”)
.names(新字符串[]{“id”,“text”})
.编码(“UTF-8”)
.build();
}
/**
*作家
*/
@豆子
@步进镜
公共FlatFileItemWriter文件写入程序(){
FlatFileItemWriter csv=新的FlatFileItemWriterBuilder()
.姓名(“作者”)
.resource(新文件系统资源(directoryTemp+“/data out-”+StringHelper.getRandomString()+“.csv”))
.delimited()
.分隔符(“;”)
.names(新字符串[]{“id”,“text”})
.编码(“UTF-8”)
.build();
csv.setAppendAllowed(true);
csv.setShouldDeleteIfExists(假);
csv.setShouldDeleteIfEmpty(false);
返回csv;
}
/**
*工人台阶。
*/
@豆子
公共步骤workerStep(){
返回workerStepBuilderFactory.get(“workerStep”)
.inputChannel(请求())
.outputChannel(回复())
.chunk(chunkSize)
.读卡器(读卡器(空))
.processor(新的大写处理器())
.writer(fileToWriter())
.build();
}
}

很难猜测在这种情况下会出现什么问题。请分享您的例子,以便我们提供帮助。