Я пытаюсь объединить Spring Batch и Spring Integration в одном проекте. Поэтому моя идея состоит в том, что Spring Batch с использованием StepBuilderFactory
читает файл с помощью пользовательского метода, возвращая String
, в то время как .processor
создает новый Message<String>
с использованием MessageBuilder
и отправляет это сообщение в канал ...
Итак, отсюда Spring Integration подключается к этому каналу и начинает работать с его рабочим процессом.
Есть идеи, как это сделать sh? так как я не получаю никаких результатов, кроме чтения String
в .processor
, но я не могу достичь интеграции с Spring оттуда. Я читал о remotechunkingmanagerstepbuilderfactory
, но он не подходит для моих целей, потому что он автоматически устанавливает специфический c тип
@Bean
public TaskletStep managerStep() throws Exception {
return managerStepBuilderFactory.get("managerStep")
.<String, String>chunk(5)
.reader(readFile())
.processor(new MessageProcess())//write String into Message and send it to Channel
.writer(doSomething())//not important
.build();
}
public class MessageProcess implements ItemProcessor<String, String> {
@Override
public String process(String readString) throws Exception {
Message<String> message = MessageBuilder.withPayload(item).build();
channel().send(message); //sending message to channel
return "item";
}
}
@Bean
public IntegrationFlow workflow() {
return IntegrationFlows
.from(channel())
.handle(checkMessage()) //checkMessage reads payload from Message<?> message
.get();
}
@Bean
public DirectChannel channel() {
return new DirectChannel();
}