当前位置: 首页 > 知识库问答 >
问题:

将Spring batch连接到Spring集成工作流

仉刚洁
2023-03-14



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

知道如何实现吗?因为除了将读取的字符串输入.processor之外,我没有得到任何结果,但是我无法从那里获得Spring集成。我读过RemoteHunkingManagerStepBuilderFactory,但它不适合我的目的,因为它会自动设置特定的类型

 @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();
    }

共有1个答案

凌宏大
2023-03-14

为了使Spring Integration与注释配置或Java DSL一起工作,您需要确保在您的@configuration类上指定了@enableIntegration。或者考虑使用Spring靴。

有关文档的更多信息:https://docs.spring.io/spring-integration/docs/5.2.3.release/reference/html/overview.html#configuration-enable-integration

 类似资料:
  • (i)完成步骤(b)的正确方法是什么?我注意到Apache Avro项目提供了一个名为avro-tools-1.8.1.jar的jar来从模式文件生成java类。但是,我不确定如何在基于SBT的工作流中使用这个jar文件。 (ii)我注意到的另一个选择是有第三方sbt插件(如:sbt-avrohugger、scavro、sbt-avro等)。有推荐的sbt插件吗?因为这些是第三方插件,我不能确定哪

  • 我试图使用Spring/AspectJ集成,但运气不好。Spring版本是3.2.17(是的,我知道有点旧)。 以下是我的相关配置: pom.xml: 应用程序上下文。xml: spect.java(相关类): 我倒了很多在线教程,运气不好。有人能指出我做错了什么吗? 杰森

  • EBean是一个无状态的ORM。http://ebean-orm.github.io/ EBean提供了一个Spring Boot工件http://ebean-orm.github.io/docs/setup/spring#spring-boothttps://github.com/ebean-orm/avaje-ebeanorm-spring 但在这种情况下,EBean直接读取jdbc连接细节,

  • <罢工> 错误: 没有类型为'org.springframework.test.web.servlet.mockMVC'的合格bean可用:至少需要1个符合autowire候选的bean。依赖项注释:{@org.springframework.beans.factory.annotation.autowire(required=true)}位于org.springframework.beans.f

  • 我想写一个批处理,从一个表读取数据,对数据进行分区,并将其交给一个spring集成工作流。 批处理和集成工作流都是独立的maven项目,集成项目是批处理项目中的依赖项。 我的批处理有一个非常小的作业上下文(xml)。只有一个分区器和一个任务。在这个任务中,我将数据(为了测试目的而硬编码)放入一个spring集成网关。之后,我将消息传递到outbound-channel-adapter中,它只是将消

  • 我正在运行节奏,卡桑德拉使用 docker run -e CASSANDRA_SEEDS=10.x.x.x e 超级数据库/服务器运行:。并成功运行。 Azure cosmos表示,任何运行在Cassandra上的系统都可以使用Azure cosmos,使用提供的cosmos cassandra APi,通过修改客户端连接创建代码,例如:GO app示例代码: Func Get会话(cosmosC