Spring batch spring批处理远程分区如何保持从机运行,监听mq
我正在研究spring批处理远程分区。我想运行一个从机来监听activemq。然后运行一个master向activemq发送消息。但是当我运行java-jar-Dspring.profiles.active=slave app.jar时。它只是完成了,没有在jvm中运行。我如何保持slave运行,监听mq。有一个worker代码示例。当您启动此代码时,将从队列JMS中删除worker wait指令。我希望它能帮助你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
@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();
}
}
很难猜测在这种情况下会出现什么问题。请分享您的例子,以便我们提供帮助。