博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Apache Camel 与 Spring Boot 集成,通过FTP定时采集、处理文件
阅读量:6232 次
发布时间:2019-06-21

本文共 4340 字,大约阅读时间需要 14 分钟。

1、概要:  

  本项目主要是通过在Spring平台上配置Camel、FTP,实现定时从FTP服务器下载文件到本地、解析文件、存入数据库等功能。  

2、搭建空项目:

  Spring Boot有几种自动生成空项目的机制:CLI、Spring tool suite、网站Spring Initializr,我们选择第三个。

  1. 访问网站http://start.spring.io/,如下图
    spring initializer网站
  2. 在dependencies添加依赖包的时候,在框中输入camle、jdbc、mysql会自动弹出提示,确认即为选中,如下图:
    选择依赖包
  3. 点击 generate project按钮,生成项目,并将其导入到ecipse,在pom.xml中添加camel-ftp依赖,注意版本号选择与camel-spring-boot-stater的相同
    org.apache.camel
    camel-ftp
    2.18.0

     

  4. 完整版的pom.xml文件如下:
    org.apache.camel
    camel-spring-boot-starter
    2.18.0
    org.apache.camel
    camel-ftp
    2.18.0
    org.springframework.boot
    spring-boot-starter-jdbc
    mysql
    mysql-connector-java
    runtime
    org.springframework.boot
    spring-boot-starter-test
    test

     

  5. 待所有依赖jar下载到本地,基础项目搭建完成

 3、配置Camel完成从ftp服务器定时下载文件到本地

  1. 在application.properties中配置远程FTP服务器的地址、端口、用户名和密码等信息
    ftp.server.info=sftp://172.16.20.133:22/../home/temp/data?username=root&password=root&delay=5s&move=done&readLock=renameftp.local.dir=file:C:/ftp/test

    注意:sftp服务器的文件位置是相对于root登录后的相对地址(被这里坑到了),delay=5s是每隔5秒钟扫描ftp服务器上是否有新文件生成,如果有下载到本地,并将服务器上的文件转移到done文件夹(/home/temp/data/done),readLock=rename可以阻止camel读取正在被写入的文件

  2. 配置路由,完成文件下载
    @Componentpublic class DownloadRouteDemo extends RouteBuilder {        private static Logger logger = LoggerFactory.getLogger( DownloadRouteDemo.class );    @Value("${ftp.server.info}")    private String sftpServer;    @Value("${ftp.local.dir}")    private String downloadLocation;    @Override    public void configure() throws Exception {        from( sftpServer ).to(  downloadLocation ).log(LoggingLevel.INFO, logger, "Downloaded file ${file:name} complete.");    }}

    注意:要继承camel的RouteBulider,重写configure方法,大意是从ftp服务器下载文件到本地,并输出文件名(运行时所需必要信息都配置在application.properties文件中)

  3. 为了让java进程在后台运行,需要在application.properties文件中增加如下配置
    camel.springboot.main-run-controller=true

     

  4. 从ftp服务器下载文件的所有工作都已完成,运行CamelFtpSpringApplication.java,如果你的ftp服务器相应的位置上有文件,就会下载到本地所配置的文件夹下

 4、通过camel定时解析本地文件并保存到数据库

  1. 在application.properties中增加如下配置
    route.parserfile.info = {
    {ftp.local.dir}}?delay=10s&move=done&readLock=renameroute.parserfile.dir = {
    {ftp.local.dir}}/done

    注意两个花括号是引用其他变量的配置

  2. 编写解析文件、入库程序等处理器
    @Componentpublic class LocationFileProcessor implements Processor {    private static Logger logger = LoggerFactory.getLogger( LocationFileProcessor.class );            @Value("${ftp.local.dir}")    private String fileDir;    @Autowired    OrderService orderService;//业务逻辑处理组件        @Override    public void process(Exchange exchange) throws Exception {        GenericFileMessage
    inFileMessage = (GenericFileMessage
    ) exchange.getIn(); String fileName = inFileMessage.getGenericFile().getFileName();//文件名 String splitTag = File.separator;//系统文件分隔符 logger.info(fileDir + splitTag + fileName);//文件的绝对路径 orderService.process(fileDir + splitTag + fileName);//解析入库等操作 }}

     

  3. 配置路由,完成业务逻辑的串联
    @Componentpublic class LocalTransformRoute  extends RouteBuilder {    private static Logger logger = LoggerFactory.getLogger( LocalTransformRoute.class );        @Value("${route.parserfile.info}")    private String location;        @Value("${route.parserfile.dir}")    private String locationDir;        @Autowired    LocationFileProcessor locationFileProcessor;        @Override    public void configure() throws Exception {        from( location ).process( locationFileProcessor ).to( locationDir ).log(LoggingLevel.INFO, logger, "tirans  file ${file:name} complete.");    }}

    注意,比上面的路由多了process配置,即业务逻辑处理配置

  4. 至此,所有工作都已完成,重新执行CamelFtpSpringApplication.java即可实现ftp文件定时下载、业务处理等(其中省去了很多,例如入库操作等)

备注:只是camle spring ftp的一个演示demo,要运用于生产,还有好多需要完善的地方

转载于:https://www.cnblogs.com/kanjiabin/p/5954833.html

你可能感兴趣的文章
Android零基础入门第45节:GridView简单使用
查看>>
读书笔记---操作系统概论
查看>>
从ASCII聊起
查看>>
大数据和Hadoop时代的维度建模和Kimball数据集市
查看>>
Android官方入门文档[3]构建一个简单的用户界面
查看>>
编写出色CSS代码的13个建议
查看>>
Alluxio之IO选项:读写类型
查看>>
ECS centos7安装elasticsearch2.4.1填坑日记
查看>>
调查显示:企业挣扎于攻击检测和分析中
查看>>
「消失」的无人机 | IFA 2017现场直击
查看>>
VIM复制指令yank
查看>>
【网络编程6】Java与C语言套接字Socket通信的例子
查看>>
Linux常用开发服务器的代码[Linux zhoulifa ]
查看>>
通过反射克隆对象,对象复制(克隆),对象合并工具类 升级版
查看>>
企业网络安全浅析
查看>>
Oracle常用sql语句(三)之子查询
查看>>
搞定IT基础设施方案 云计算先行
查看>>
Improving (network) I/O performance ...
查看>>
sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法...
查看>>
innodb的文件组成
查看>>