天道酬勤,学无止境

Spring integration move file after processing

How to move a file after processing in spring integration after processing file ..? I have followed http://xpadro.blogspot.com/2016/07/spring-integration-polling-file.html to implement the file polling , but I need to add onSuccess and OnError transnational events (with out XML configurations)

评论

I am not sure what you mean by "transaction", file systems are generally not transactional, but you can add an advice to the final consumer in the flow...

@SpringBootApplication
public class So40625031Application {

    public static void main(String[] args) {
        SpringApplication.run(So40625031Application.class, args);
    }

    @Bean
    public IntegrationFlow flow() {
        return IntegrationFlows.from(
                    Files.inboundAdapter(new File("/tmp/foo")), e -> e.poller(Pollers.fixedDelay(1000)))
                .transform(Transformers.fileToString())
                .handle("processor", "process", e -> e.advice(advice()))
                .get();
    }

    @Bean
    public Processor processor() {
        return new Processor();
    }

    @Bean
    public AbstractRequestHandlerAdvice advice() {
        return new AbstractRequestHandlerAdvice() {

            @Override
            protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) throws Exception {
                File file = message.getHeaders().get(FileHeaders.ORIGINAL_FILE, File.class);
                try {
                    Object result = callback.execute();
                    file.renameTo(new File("/tmp/bar", file.getName()));
                    System.out.println("File renamed after success");
                    return result;
                }
                catch (Exception e) {
                    file.renameTo(new File("/tmp/baz", file.getName()));
                    System.out.println("File renamed after failure");
                    throw e;
                }
            }
        };
    }

    public static class Processor {

        public void process(String in) {
            System.out.println(in);
        }

    }

}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • TaskExecutor is not working Spring Integration
    I have setup File poller with task executor ExecutorService executorService = Executors.newFixedThreadPool(10); LOG.info("Setting up the poller for directory {} ", finalDirectory); StandardIntegrationFlow standardIntegrationFlow = IntegrationFlows.from(new CustomFileReadingSource(finalDirectory), c -> c.poller(Pollers.fixedDelay(5, TimeUnit.SECONDS, 5) .taskExecutor(executorService) .maxMessagesPerPoll(10) .advice(new LoggerSourceAdvisor(finalDirectory)) )) //move file to processing first processing .transform(new FileMoveTransformer("C:/processing", true)) .channel("fileRouter") .get(); As
  • Moving processed files to another directory using Spring integration ftp inbound adapter
    I am trying to poll local directory using ftp inbound adapter to fetch files for further processing. I want to move the file to another local directory and delete it from origination. Not getting a way to achieve it. Here's what I have so far: <int-ftp:inbound-channel-adapter id="ftpInbound" channel="ftpChannel" session-factory="ftpClientFactory" filename-pattern="*.xml" auto-create-local-directory="false" delete-remote-files="false" remote-directory="/" local-directory="//C://FBS//testmq"> <int:poller fixed-rate="20000" /> </int-ftp:inbound-channel-adapter> <int:channel id="ftpChannel"> <int
  • Spring integration for sftp
    How can I move file from local system to remote FTP using SFTP adapter. I am going through the examples and all are mentioning to copy files from remote FTP to local machine. I need to move files from local machine to remote system folder. <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-sftp="http://www.springframework.org/schema/integration/sftp" xmlns:file="http://www.springframework.org/schema/integration/file" xsi
  • SFTP的Spring集成(Spring integration for sftp)
    问题 如何使用SFTP适配器将文件从本地系统移动到远程FTP。 我正在浏览示例,所有提到的都是将文件从远程FTP复制到本地计算机。 我需要将文件从本地计算机移动到远程系统文件夹。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:int="http://www.springframework.org/schema/integration" xmlns:int-sftp="http://www.springframework.org/schema/integration/sftp" xmlns:file="http://www.springframework.org/schema/integration/file" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org
  • 什么时候使用Spring Integration vs.Camel?(When to use Spring Integration vs. Camel?)
    问题 作为经验丰富的Spring用户,我假设Spring Integration在需要某些(JMS)消息传递功能(更多详细信息)的最新项目中最有意义。 使用Spring Integration几天后,考虑到要配置一些请求-响应(侦听不同的JMS队列)通信所必须配置的通道数量,仍然感觉到很多配置开销。 因此,我一直在寻找一些Camel与Spring Integration有何不同的背景信息,但是似乎那里的信息还很多余,我发现: http://java.dzone.com/articles/spring-integration-and-apache(从2009年12月开始,在Spring Integration和Camel中实现现实世界中的集成场景之间进行非常中立的比较) http://hillert.blogspot.com/2009/10/apache-camel-alternatives.html(将骆驼与其他解决方案进行比较,2009年10月) http://raibledesigns.com/rd/entry/taking_apache_camel_for_a(Matt Raible,2008年10月) 问题是:您在使用一个堆栈而不是另一个堆栈时获得了哪些经验? 在哪种情况下,您会建议Camel缺少Spring Integration支持? 您在哪里看到各自的优缺点?
  • SpringBoot整合Mybatis超详细流程
    SpringBoot整合Mybatis超详细流程 文章目录 SpringBoot整合Mybatis超详细流程前言详细流程0.引入Mybatis1.创建数据2.创建程序目录3.理解后台访问流程4.核心文件配置5.编写entity6.编写dao7.编写Mapper8.编写Service9.编写Controller10.运行项目 参考文章 前言 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Ordinary Java Object,普通老式 Java 对象)为数据库中的记录。 因为 Mybatis的性能非常不错,SpringBoot 官方推荐使用 Mybatis 来连接数据库进行 CRUD 操作。 Mybatis的官方文档地址:https://mybatis.org/mybatis-3/zh/index.html 详细流程 0
  • springboot2.x整合mybatisPlus和activiti6.0遇到的问题
    前言 最近在springboot整合mybatisPlus和activiti6.0过程踩了了很多坑,所以本文做下记录。 正文 依赖的Jar包详情: <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version> </dependency> <!--activiti--> <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>6.0.0</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> <scope>runtime</scope> </dependency> 配置信息: 数据库链接信息: url: jdbc:mysql://47.103.5.190:3306
  • Activiti流程框架_Springboot整合Activiti遇到的问题汇总
    问题一:Springboot整合activiti后项目启动失败;   在整合之前项目可以成功的部署到tomcat上,但是在整合activiti的maven依赖后, <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>5.22.0</version> </dependency>   当再次重新启动tomcat就报错了,但是从控制台的输出中看不出任何出错原因,所以我在网上收集Springboot整合activiti过程中出错的类似问题; 第一类问题: @SpringBootApplication(exclude=SecurityAutoConfiguration.class)   在springBoot的启动项中需要添加exclude=SecurityAutoConfiguration.class,因为activiti内嵌了Spring Security安全架构,而现在的项目中使用的是shiro框架,所以需要排除; 第二类问题: spring.activiti.check-process-definitions=false   SpringBoot整合activiti后默认启动项目时会将processes
  • SpringBoot整合QueryDSL
    1、创建父模块 File-->New-->Project-->Spring Initializr-->Next 2、创建子模块 右键父模块-->New-->Module-->Next 依次创建web、service、entity模块 完成后删除所有mvnw、mvnw.cmd、HELP.md文件及.mvn目录,除web外其他模块的启动类、resource目录、父模块src目录 3、父模块pom添加 <packaging>pom</packaging> <!--父模块打包类型必须为pom--> <modules> <module>web</module> <module>service</module> <module>entity</module> </modules> 4、子模块pom添加依赖 <packaging>jar</packaging> <!-- web模块引入web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- web模块引入sql server驱动依赖 --> <dependency> <groupId>com.microsoft.sqlserver<
  • IDEA2019开发Spring Boot整合Mybatis实现User的CRUD(增读更删)
    本实例适合刚开始学习spring boot的有一定开发基础的同学们,使用当前比较流行的IntelliJ IDEA 2019开发工具,利用spring boot框架,采用Java语言,结合MySQL数据库设计实现用户User的增加、读取、更新、删除。首先,我们先了解一下基本概念。 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。而SpringBoot是一个全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。 IntelliJ IDEA是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)
  • Spring集成Mybatis的原理分析
    Spring集成Mybatis的原理分析 SqlSessionFactoryBeanMapperFactoryBeanMapperScannerConfigurer 我们在 MyBatis与Spring的集成 中分析了我们Spring与MyBatis集成的配置方法,后来我们有继续介绍了我们MyBatis相关的源码分析,这里我们就来看一看我们Spring是如何集成我们MyBatis的。 我们以前说了我们MyBatis集成到Spring之中,我们几乎就不需要配置MyBatis的配置文件了,除非一些在settings中的配置,其他的一律都可以在我们的Spring配置之中完成,其中针对MyBatis的配置最重要的如下: 在我们的Spring集成完MyBatis之后,我们就可以非常简单的来使用了,当然我们使用@Autowired注解也是可以的 但是为什么可以这样用呢?我们在 初识MyBatis 知道了我们MyBatis中使用的Mapper它的生命周期可都是方法级别的,这里集成了Spring为什么就可以直接在类中注入了呢?这样会产生安全问题么? SqlSessionFactoryBean 在了解上述Mapper生命周期问题之前,我们先来了解一下我们的SqlSessionFactory
  • MyBatis 源码学习15——MyBatis与Spring整合(上)
    一、MyBatis与Spring整合 MyBatis与Spring框架通过MyBatis Spring模块进行整合。 整合原理:MyBatis的Mapper实例是通过动态代理创建的。与Spring框架整合后,MyBatis中的Mapper动态代理对象会作为Spring框架中的Bean注册到Spring容器中。 Bean的配置如下: Spring配置Bean的方式有多种,例如XML文件、Java注解以及JavaConfig等方式。这里我们使用JavaConfig方式配置: 1.配置数据源对象 2.配置SqlSessionFactory对象 SqlSession是MyBatis提供的与数据库交互的接口,而SqlSession的创建依赖于SqlSessionFactory对象,因此我们需要创建SqlSessionFactory对象, 并通过Spring来管理SqlSessionFactory对象的生命周期。我们使用了MyBatis Spring模块中提供的SqlSessionFactoryBean来构建SqlSessionFactory对象。 3.配置SqlSessionTemplate对象 在使用MyBatis时,我们可以通过SqlSessionFactory对象的openSession()方法获取一个SqlSession对象
  • Spring入门知识点
    Spring基础知识总述 一.Spring概念二.Spring体系结构1、Data Access/Integration(数据访问/集成)2、Web 模块3、 Core Container(核心容器)4.、其他模块 三.Spring核心1、Spring之IOC2、AOP 四.Spring环境搭建1.创建配置文件,如图操作2.命名规范3.输入名字后4.在创建好的容器里面创建对象(创建一个实体类) 五.DI依赖注入六.SpringDI基本依赖注入方式1、调用set方式注入2、通过带参的构造方法注入3、P命名空间注入4、Spel表达式注入 七.Bean标签属性的作用1.name属性:2.Scope作用域:3.lazi-init属性表示加载的时机(只有在scope=”singleton”才会生效)4.对象创建完成后调用的方法,和对象销毁后调用的方法 八.创建Spring对象的方式1、无参数的构造方法2、有参数的构造方法3、静态工厂创建对象4、非静态工厂创建对象 九.复杂类型注入方法(1).注入对象(2)注入数组(3)注入集合(4)注入map 十.Spring Bean的生命周期 一.Spring概念 简介: Spring是一种多层的J2EE应用程序框架,其核心就是管理资源组件以及依赖关系,Spring框架为现代基于java的企业应用程序提供了一个全面的编程和配置模型。 优点: (1
  • 如何在Spring集成中并行和同步处理?(how to process in parallel and synchronously in spring integration?)
    问题 在Spring集成中是否可以保持通道同步(发送消息后获得确认),但同时处理更多消息(并行处理),而无需使用线程创建自己的代码(即ExecutorService执行并提交工作程序)并等待它们? 我想使用FTP通过FTP上传文件,但同时上传更多文件,而无需在代码中创建自己的线程。 我需要知道何时上传所有文件(这就是为什么我希望它是同步的)。 通过Spring集成配置是否可以?如果可以,如何进行? 回答1 好吧,看起来您需要一些流程,例如: <gateway>将文件发送到通道并等待确认结果 <splitter>到ExecutorChannel以并行处理每个文件 <int-ftp:outbound-gateway>上载每个文件 <aggregator>以关联和分组<int-ftp:outbound-gateway> <aggregator>应该将其结果发送到<gateway> ,当时是waitng。 让我知道,如果不清楚。 更新 如何在Spring Integration Java DSL中执行任何示例? 像这样的东西: @Configuration @EnableIntegration @IntegrationComponentScan public class Configuration { @Bean public IntegrationFlow uploadFiles() {
  • 集成测试基于Spring Boot的微服务(Integration testing Spring Boot based Microservices)
    问题 我已经阅读了许多有关使用Spring Boot和RESTful服务的指南,其中许多指南包含有关运行单元测试的信息,其中最著名的是“使用Spring Boot构建应用程序”。 但是,我还没有看到任何有关如何对消耗/依赖于其他Spring Boot应用程序的Spring Boot应用程序进行单元测试的示例,这在云微服务架构中很常见。 因此,例如,我们有以下Spring Boot服务: ServiceMediator,Adapter1,Adapter2 ServiceMediator根据输入调用Adapter1或Adapter2。 在Spring JUnit测试中启动和测试ServiceMediator之前,是否有办法启动Spring Boot服务Adapter1和Adapter2? 回答1 process-exec-maven-plugin可能会有所帮助,因为它允许在集成前测试阶段(作为标准Spring Boot应用程序)启动多个Java进程,并且它会自动负责在集成后测试阶段将其关闭。 注意:集成测试应在集成测试阶段运行,因为应使用spring-boot-maven-plugin来配置maven-failsafe-plugin 。 然后,要运行我们的集成测试,请验证是否应该以更高的Maven生命周期为目标,因为集成测试阶段实际上位于软件包和验证生命周期之间,请参阅默认生命周期。
  • springboot集成shiro-redis
    springboot集成shiro-redis springboot集成shiro-redis 近期公司项目中需要用到 shrio做登录认证,认证的token用redis存储,在集成过程中出现了一些问题,写这篇博客就是为了以后在调用的时候避坑,也希望可以帮助到其他遇到同样的问题。 项目架构 项目是前后端分离的项目,主要运用到以下的技术: 后端+后台管理: springboot;mybatise;maven;shrio;redis;angular.js;jdk1.8mysql;阿里云 oss存储(视频和图片); 前端: uni app (一套代码多端运行);微信 js-sdk(分享功能); redis安装 公司用的是阿里云的服务器,系统是 CentOS 6.8 64位,使用putty+winSCP工具操作和上传,安装流程如下: 1、使用putty登录服务器 (这里方便操作,我直接使用虚拟机的centos 7,安装流程是不变的) 2、切换到 /usr/local目录下 3、在local下新建一个redis目录 4、使用上传工具WinSCP将redis的包上传到redis目录下(我的redis的安装包是提前下载好的,也可以在线安装) 5、解压redis tar -zxvf 解压包名 解压成功后,redis目录下会多出一个redis解压后的文件 6、在redis目录下创建两个目录
  • Spring+SpringMVC+MyBatis+easyUI整合基础篇(十)SVN搭建
    前言 前面一篇文章讲了一下版本控制,但其实这一篇并没有打算讲细节的,感觉应该自己去动手弄一下,后来考虑了一下,版本控制真的挺重要的,如果自己实在搭建不好反而不去使用的话,真的有点可惜,当然这些话是针对初学者来说的,如果已经有这方面经验的话,可以忽略。我也搭建了一个svn服务器,没有用过的可以去体验一下,但是希望大家体验为主,别删文件,因为不止你一个人在看。这里呢,先讲一下svn,至于git嘛,想体验的话直接去github吧。 项目实际效果展示在这里,账密:admin 123456 下载地址,点这里 github地址,在这里 搭建过程 yum update yum -y install subversion 首先是更新升级安装包,然后再执行install命令安装svn,由于本次搭建时所在的系统是centos,所以用的是yum命令,如果是Ubuntu用户的话,用apt-get命令就好,过程是一样的,整个过程如下图: 安装成功后,执行svn --version命令查看版本号,得到如下结果,即为安装成功。 创建仓库目录 mkdir -p /opt/svn/ssm-demo 此时ssm-demo目录为空。 创建版本库 svnadmin create /opt/svn/ssm-demo 执行以上命令后,再次查看ssm-demo目录,发现版本库创建完成,目录中生成了以下文件:
  • Spring Cloud Stream 体系及原理介绍
    作者 | 洛夜来源 | 阿里巴巴云原生公众号 Spring Cloud Stream在 Spring Cloud 体系内用于构建高度可扩展的基于事件驱动的微服务,其目的是为了简化消息在 Spring Cloud 应用程序中的开发。 Spring Cloud Stream (后面以 SCS 代替 Spring Cloud Stream) 本身内容很多,而且它还有很多外部的依赖,想要熟悉 SCS,必须要先了解 Spring Messaging 和 Spring Integration 这两个项目,接下来,文章将围绕以下三点进行展开: 什么是 Spring Messaging 什么是 Spring Integration 什么是 SCS 体系及其原理 本文配套可交互教程已登录阿里云知行动手实验室,PC 端登录 start.aliyun.com_ _在浏览器中立即体验。 Spring Messaging Spring Messaging 是 Spring Framework 中的一个模块,其作用就是统一消息的编程模型。 比如消息 Messaging 对应的模型就包括一个消息体 Payload 和消息头 Header: package org.springframework.messaging; public interface Message<T> { T getPayload()
  • 2020年Java面试题总结(附答案,最后更新:2020-07-14)
    文章目录 最近更新2020-07-14,更新的主要是前端部分。 一 Java部分1. JAVA中的几种基本类型,各占用多少字节?2. String能被继承吗?为什么?3. ArrayList 和 LinkedList 有什么区别?4. 抽象类和接口的区别?5. 反射的原理,反射创建类实例的三种方式是什么?6. 写出三种单例模式的实现。7. 深拷贝和浅拷贝区别。8. Error和Exception的区别。9. CheckedException 和 RuntimeException 的区别。10. 请列出 5 个运行时异常。11. 在什么场景下需要重新实现hashCode和equals方法?12. 泛型的存在是用来解决什么问题?13. 什么情况下会发生栈内存溢出?14. 什么是序列化和反序列化?为什么需要序列化和反序列化?15. JVM中一次完整的GC流程是怎样的?16. JVM中经典的垃圾回收器有哪些?17. JVM常用参数有哪些?18. tomcat如何调优?19. 简述spring加载流程。20. spring的事务传播行为有哪些?21. spring事务配置示例。22. 创建对象有那几种方式?23. 如何退出多重循环?24. String,StringBuffer,StringBuilder的区别?25. 创建线程有几种方式?有什么区别?26. Thead类的start(
  • Spring Boot整合Dubbo Provider
    文章目录 一、前言二、Provider 整合2.1 ServiceAnnotationBeanPostProcessor 类层次结构2.2 Provider 整合流程2.3 源码佐证2.3.1 注解驱动2.3.2 Dubbo配置文件加载2.3.3 ServiceAnnotationBeanPostProcessor 包扫描 三、Provider 侧服务导出3.1 服务导出 四、总结 一、前言 前一篇《Spring Boot整合Dubbo Consumer》介绍了Dubbo Consumer与Spring Boot的整合流程,这一篇接着补齐Spring Boot整合Dubbo Provider。Consumer和Provider各自与Spring整合的流程比较独立,分别用到的是Spring两大核心扩展机制:前者是基于BeanPostProcessor,后者是基于BeanFactoryPostProcessor扩展机制。不仅仅只Dubbo,其他开源组件与Spring整合(如MyBatis、Kafka),基本也是这利用两种扩展机制。故本文虽说是讲Dubbo与Spring整合,但更多的是希望读者通过Dubbo这个具体case,熟悉、掌握Spring两大扩展机制,更加深刻地理解Spring。 二、Provider 整合 Consumer整合,利用的是