Apache Camel 與 Spring Boot 整合,通過FTP定時採集、處理檔案
1、概要:
本專案主要是通過在Spring平臺上配置Camel、FTP,實現定時從FTP伺服器下載檔案到本地、解析檔案、存入資料庫等功能。
2、搭建空專案:
Spring Boot有幾種自動生成空專案的機制:CLI、Spring tool suite、網站Spring Initializr,我們選擇第三個。
- 訪問網站http://start.spring.io/,如下圖
- 在dependencies新增依賴包的時候,在框中輸入camle、jdbc、mysql會自動彈出提示,確認即為選中,如下圖:
- 點選 generate project按鈕,生成專案,並將其匯入到ecipse,在pom.xml中新增camel-ftp依賴,注意版本號選擇與camel-spring-boot-stater的相同
<
- 完整版的pom.xml檔案如下:
<dependencies> <dependency> <groupId>org.apache.camel</groupId> <
- 待所有依賴jar下載到本地,基礎專案搭建完成
3、配置Camel完成從ftp伺服器定時下載檔案到本地
- 在application.properties中配置遠端FTP伺服器的地址、埠、使用者名稱和密碼等資訊
ftp.server.info=sftp://172.16.20.133:22/../home/temp/data?username=root&password=root&delay=5s&move=done&readLock=rename ftp.local.dir=file:C:/ftp/test
注意:sftp伺服器的檔案位置是相對於root登入後的相對地址(被這裡坑到了),delay=5s是每隔5秒鐘掃描ftp伺服器上是否有新檔案生成,如果有下載到本地,並將伺服器上的檔案轉移到done資料夾(/home/temp/data/done),readLock=rename可以阻止camel讀取正在被寫入的檔案
- 配置路由,完成檔案下載
@Component public 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檔案中)
- 為了讓java程序在後臺執行,需要在application.properties檔案中增加如下配置
camel.springboot.main-run-controller=true
- 從ftp伺服器下載檔案的所有工作都已完成,執行CamelFtpSpringApplication.java,如果你的ftp伺服器相應的位置上有檔案,就會下載到本地所配置的資料夾下
4、通過camel定時解析本地檔案並儲存到資料庫
- 在application.properties中增加如下配置
route.parserfile.info = {{ftp.local.dir}}?delay=10s&move=done&readLock=rename route.parserfile.dir = {{ftp.local.dir}}/done
注意兩個花括號是引用其他變數的配置
- 編寫解析檔案、入庫程式等處理器
@Component public 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<RandomAccessFile> inFileMessage = (GenericFileMessage<RandomAccessFile>) exchange.getIn(); String fileName = inFileMessage.getGenericFile().getFileName();//檔名 String splitTag = File.separator;//系統檔案分隔符 logger.info(fileDir + splitTag + fileName);//檔案的絕對路徑 orderService.process(fileDir + splitTag + fileName);//解析入庫等操作 } }
- 配置路由,完成業務邏輯的串聯
@Component public 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配置,即業務邏輯處理配置
- 至此,所有工作都已完成,重新執行CamelFtpSpringApplication.java即可實現ftp檔案定時下載、業務處理等(其中省去了很多,例如入庫操作等)
備註:只是camle spring ftp的一個演示demo,要運用於生產,還有好多需要完善的地方
相關推薦
Apache Camel 與 Spring Boot 整合,通過FTP定時採集、處理檔案
1、概要: 本專案主要是通過在Spring平臺上配置Camel、FTP,實現定時從FTP伺服器下載檔案到本地、解析檔案、存入資料庫等功能。 2、搭建空專案: Spring Boot有幾種自動生成空專案的機制:CLI、Spring tool suite、網站Spring Initializr,我
FastDFS與spring boot整合
在專案Pom當中加入依賴 Maven依賴為 com.github.tobato fastdfs-client 1.26.3 將Fdfs配置引入專案 將FastDFS-Client客戶端引入本地化專案的方式非常簡單,在SpringBoot專案/src/[com.xxx.
activemq 學習系列(五) activemq 與 spring boot 整合
-a pool autowire mapping pri control ESS fin tid activemq 與 spring boot 整合 1、添加依賴 <dependency> <groupId>
Apache Camel繼承Spring Boot 實現檔案遠端複製和轉移
pom.xml <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-ftp</artifactId> <version>2.
javaEE Freemarker模板引擎,Freemarker與Spring的整合,生成靜態頁面
applicationContext.xml(Spring配置檔案): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche
Thymeleaf Or Freemarker 與Spring boot 整合
整體步驟:(1) 在pom.xml中引入thymeleaf;(2) 如何關閉thymeleaf快取(3) 編寫模板檔案.htmlSpring Boot預設就是使用thymeleaf模板引擎的,所以只需要在pom.xml加入依賴即可:<de
SpringData JPA 、Hibernate與Spring Boot整合
dependencies { compile('org.springframework.boot:spring-boot-starter-web') //新增thymeleaf依賴 compile('org.springframework.boot:spring
基於tobato的fastdfs與spring boot整合實現檔案上傳和下載
專案結構: pom.xml檔案新增配置: <!-- fastdfs --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastd
MyBtais整合Spring Boot整合,TypeHandler對列舉類(enum)處理
概要 問題描述 我想用列舉類來表示使用者當前狀態,列舉類由 code 和 msg 組成,但我只想把 code 儲存到資料庫,查詢處理,能知道使用者當前狀態,這應該怎麼做呢?在 Spring 整合
spring boot 整合mybatis 通過官方mybatis-spring-boot-starter
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XM
Spring-Boot整合freemarker引入靜態資源css、js等(轉)
mark pan 創建 line path main 實現 content -m 一、概述springboot 默認靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/
spring boot整合雙持久層框架jpa、mybatis
分享 註意 準備 emp star lease 框架 ins 復雜 公司之前用的是spring boot + jpa,但由於jpa無法完美的解決某些動態查詢問題,就使用的jdbcTemplate 動態封裝SQL,由於代碼相對復雜,可讀性差,現準備再引入mybatis。下
Spring Boot整合之模板引擎(Thymeleaf、Freemarker、jsp)
1. Thymeleaf模板 1.1 在pom.xml中新增Thymeleaf依賴 <!--使用thymeleaf標籤--> <dependency> <groupId>org.springframework.boot</groupId>
Spring-Boot整合freemarker引入靜態資源css、js等
一、概述 springboot 預設靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/main/resources目錄檔案中,這樣可以達到在專案啟動時候可以自動載入為專案靜態地址目錄到cl
Spring Boot 整合之模板引擎(jsp、Freemarker 、Thymeleaf )
整合JSP模板 新增依賴 建立 maven 工程,在 pom.xml 檔案中新增如下依賴: <dependency> <groupId>javax.servlet</groupId> <artifactId>
在spring boot下如何通過rest 介面 來上傳檔案 和下載檔案 到 hadoop hdfs
本文將用程式碼來演示在spring boot裡面,用hadoop client,通過restful API來上傳檔案 和下載檔案 到 hadoop hdfs。 裡面有一些程式碼依賴坑,注意繞行。 前提: 如果你的程式碼在windows上執行,去連線linux上的hado
Android通過ftp上傳、下載檔案
在開發中有可能會遇到通過ftp協議來上傳和下載檔案,網上也有很多的帖子,但大部分都沒什麼用,通過參考其他和自己思考寫了兩個經測試可用的方法,這兩個方法需要一個commo
Spring Boot 整合dubbo與zookeeper實現不同專案之間資料通過服務的傳遞
一、安裝zookeeper 1、下載路徑:http://mirrors.hust.edu.cn/apache/zookeeper/ 可以自己選擇版本進行下載(同時支援windows和linux) 2、目錄結構 3、修改conf下的配置檔案zoo.cfg 4、
Spring Boot 整合 Elasticsearch,實現 function score query 權重分查詢
search 小寫 業務 jpg 啟動會 last cti cal agen 摘要: 原創出處 www.bysocket.com 「泥瓦匠BYSocket 」歡迎轉載,保留摘要,謝謝! 『 預見未來最好的方式就是親手創造未來 – 《史蒂夫·喬布斯
Spring Boot 整合 Apache Solr 異常:Expected mime type application/octet-stream but got text/html 的解決.
註釋 info 過時 查看 異常 dea 沒有 時間 發的 解決方法:Spring Data Solr 3.0 以上版本 將@SolrDocument(solrCoreName = "new_core") 中的solrCoreName 字段改為使用collection字段