Java 将Spring批处理连接到Spring集成工作流

Java 将Spring批处理连接到Spring集成工作流,java,spring,spring-integration,spring-batch,spring-integration-dsl,Java,Spring,Spring Integration,Spring Batch,Spring Integration Dsl,我试图将Spring批处理和Spring集成结合到一个项目中。因此,我的想法是,使用StepBuilderFactory的Spring批处理使用返回字符串的自定义方法读取文件,.processor使用MessageBuilder创建新的消息,并将该消息发送到通道… 因此,Spring Integration从此连接到该渠道并开始工作流程。 你知道如何做到这一点吗?因为除了将读取的字符串读取到处理器之外,我没有得到任何结果,但是我无法从那里实现Spring集成。 我读过关于remotechunki



我试图将Spring批处理和Spring集成结合到一个项目中。因此,我的想法是,使用
StepBuilderFactory
的Spring批处理使用返回
字符串的自定义方法读取文件,
.processor
使用
MessageBuilder
创建新的
消息
,并将该消息发送到通道…
因此,Spring Integration从此连接到该渠道并开始工作流程。

你知道如何做到这一点吗?因为除了将读取的
字符串
读取到
处理器
之外,我没有得到任何结果,但是我无法从那里实现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();
    }
@Bean
public TaskletStep managerStep()引发异常{
返回managerStepBuilderFactory.get(“managerStep”)
.chunk(5)
.reader(readFile())
.processor(new MessageProcess())//将字符串写入消息并发送到通道
.writer(doSomething())//不重要
.build();
}
公共类MessageProcess实现ItemProcessor{
@凌驾
公共字符串进程(字符串读取字符串)引发异常{
Message Message=MessageBuilder.withPayload(item).build();
通道().send(message);//将消息发送到通道
返回“项目”;
}
}
@豆子
公共集成流工作流(){
返回积分流
.from(通道())
.handle(checkMessage())//checkMessage从消息读取有效负载
.get();
}
@豆子
公共DirectChannel(){
返回新的DirectChannel();
}

要使Spring集成与注释配置或Java DSL一起工作,您需要确保在
@configuration
类的某些部分上指定
@EnableIntegration
。或者考虑使用弹簧靴。


请参阅文档中的更多信息:

您的
消息处理遇到了什么问题?看起来没有什么问题。尽管我会将
消息处理
作为
@Bean
。还要确保在
@Configuration
类的某个地方有一个
@enableeintegration
注释。我同意Artem。除此之外,为什么处理器做两件事而编写器什么也不做?我将使用处理器将字符串转换为消息,并使用编写器将消息发送到频道。谢谢您的评论。你是对的。目前的代码运行良好。我只是忘记了@Artem Bilan建议的一些注释。如果你把它贴出来,我会接受这个答案