将 Spring 个批次连接到 Spring 个集成工作流程
Connecting Spring batch to Spring integration workflow
我正在尝试将 Spring 批处理和 Spring 集成结合到一个项目中。所以我的想法是 Spring 使用 StepBuilderFactory
的批处理使用返回 String
的自定义方法读取文件,而 .processor
使用 [=17 创建一个新的 Message<String>
=] 并将该消息发送到频道...
所以从这里 Spring Integration 连接到那个频道并开始工作它的工作流程..
知道如何做到这一点吗?因为除了读取 String
到 .processor
之外我没有得到任何结果,但我无法从那里达到 Spring 集成。
我读到了 remotechunkingmanagerstepbuilderfactory
但它不适合我的目的,因为它会自动设置特定类型
@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();
}
要使 Spring 集成与注释配置或 Java DSL 一起工作,您需要确保在某些 @Configuration
[=18] 上指定 @EnableIntegration
=].或者考虑使用Spring Boot.
我正在尝试将 Spring 批处理和 Spring 集成结合到一个项目中。所以我的想法是 Spring 使用 StepBuilderFactory
的批处理使用返回 String
的自定义方法读取文件,而 .processor
使用 [=17 创建一个新的 Message<String>
=] 并将该消息发送到频道...
所以从这里 Spring Integration 连接到那个频道并开始工作它的工作流程..
知道如何做到这一点吗?因为除了读取 String
到 .processor
之外我没有得到任何结果,但我无法从那里达到 Spring 集成。
我读到了 remotechunkingmanagerstepbuilderfactory
但它不适合我的目的,因为它会自动设置特定类型
@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();
}
要使 Spring 集成与注释配置或 Java DSL 一起工作,您需要确保在某些 @Configuration
[=18] 上指定 @EnableIntegration
=].或者考虑使用Spring Boot.