麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Spring boot項目集成Camel FTP的方法示例

2024-07-14 08:42:28
字體:
來源:轉載
供稿:網友

1、Spring 中集成camel-ftp

近期項目中涉及到定期獲取讀取并解析ftp服務器上的文件,自己實現ftp-client的有些復雜,因此考慮集成camel-ftp的方式來解決ftp文件的下載問題。自己則專注于文件的解析工作.

demo: https://github.com/LuckyDL/ftp-camel-demo

1.1、POM引用

<dependency>  <groupId>org.apache.camel</groupId>  <artifactId>camel-spring-boot-starter</artifactId>  <version>2.22.1</version></dependency><dependency>  <groupId>org.apache.camel</groupId>  <artifactId>camel-ftp</artifactId>  <version>2.22.1</version></dependency>

注意:在選擇版本的時候,如果SpringBoot版本是1.5.10.RELEASE的話,那么camel的版本最高只能使用2.21.2,使用2.22版本將會報錯。經測試的配套關系如下:

 

SrpingBoot Camel
1.5 <=2.21.2
2.0 >=2.22.x

 

其他情況都會出現錯誤.

1.2、SpringBoot application.yml配置

ftp: addr: 172.18.18.19:21  # ftp地址、端口 name: ftpuser password: ftp2018 options: password=${ftp.password}&readLock=rename&delay=10s&binary=true&filter=#zipFileFilter&noop=true&recursive=true url: ftp://${ftp.name}@${ftp.addr}/?${ftp.options} # 本地下載目錄 local-dir: /var/data# 后臺運行進程camel: springboot:  main-run-controller: truemanagement: endpoint:  camelroutes:   enabled: true   read-only: true

配置說明:

  • delay:每次讀取時間間隔
  • filter: 指定文件過濾器
  • noop:讀取后對源文件不做任何處理
  • recursive:遞歸掃描子目錄,需要在過濾器中允許掃描子目錄
  • readLock:對正在寫入的文件的處理機制

更多參數配置見官方手冊

1.3、配置路由

要配置從遠端服務器下載文件到本地,格式如下,from內部為我們在上面配置的url,to為本地文件路徑。

@Componentpublic class DownloadRoute extends RouteBuilder {  /** logger */  private static final Logger logger = LoggerFactory.getLogger(DownloadRoute.class);  @Value("${ftp.server.info}")  private String sftpServer;    @Value("${ftp.local.dir}")  private String downloadLocation;    @Autowired  private DataProcessor dataProcessor;  @Override  public void configure() throws Exception{    from(sftpServer)        .to(downloadLocation)        .process(dataProcessor)        .log(LoggingLevel.INFO, logger, "Download file ${file:name} complete.");  }}

說明:

若將from配置為本地地址,to配置為遠端地址,則可以實現向遠端服務器上傳文件

process是數據處理器,如果僅僅是下載文件到本地,那么就不需要該配置。

也可以配置多條路由也處理不同的業務:

@Override  public void configure() throws Exception{    // route1    from(sftpServer)        .to(downloadLocation)        .process(dataProcessor)        .log(LoggingLevel.INFO, logger, "Download file ${file:name} complete.");    // route2    from(xxx).to(xxxx);        // route3    from(xxxx).to(xxx).process(xxx);  }

1.4、配置文件過濾

如果ftp服務器上有很多文件,但是我們需要的只是其中的一種,全部下載下來,有業務層來實現過濾肯定不合適,我們可以使用camel-ftp的文件過濾器,通過url中的filter來指定,如“filter=#zipFileFilter”,
用戶需要實現GenericFileFilter接口的accept方法。

例如我們只需要下載后綴名為.zip的壓縮包到本地,過濾器的編寫方法如下,因為我要遞歸掃描子目錄,因此類型為目錄的文件也需要允許通過。

/** * camel ftp zip文件過濾器 */@Componentpublic class ZipFileFilter implements GenericFileFilter {    @Override  public boolean accept(GenericFile file) {    return file.getFileName().endsWith(".zip") || file.isDirectory();  }}

1.5、文件處理器

文件處理器就是我們對下載到本地的文件進行處理的操作,比如我們可能需要對下載的文件重新規劃目錄;或者解析文件并進行入庫操作等。這就需要通過實現Processer的process方法。

本文中的demo就是通過processor來解析zip包中的文件內容:

@Componentpublic class DataProcessor implements Processor {  /** logger */  private static final Logger logger = LoggerFactory.getLogger(DataProcessor.class);  @Value("${ftp.local-dir}")  private String fileDir;  @Override  public void process(Exchange exchange) throws Exception {    GenericFileMessage<RandomAccessFile> inFileMessage = (GenericFileMessage<RandomAccessFile>) exchange.getIn();    String fileName = inFileMessage.getGenericFile().getFileName();    String file_path = fileDir + '/' + fileName;    readZip(file_path);  }    ...  // 省略數據處理方法}

2、參考資料

關于camel ftp的各個參數配置,參見官方手冊:http://camel.apache.org/ftp2.html

此處需要注意的是,camel ftp手冊里面只寫了ftp獨有的一些配置項,camel-ftp組件繼承自camel-file,手冊里面有說明,就一句話,不注意就可能忽略了,筆者就是沒注意,被遞歸掃描子目錄的問題折騰了2天(閱讀要細心o(╥﹏╥)o)。。。因此有一些參數配置項可能在camel-ftp手冊里面找不到,請移步至:http://camel.apache.org/file2.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品久久久久一区二区 | 激情久久一区二区 | 欧美999| 免费a级毛片永久免费 | 欧美在线成人影院 | 草莓福利社区在线 | 看国产毛片| 55夜色66夜色国产精品视频 | a黄毛片| 女人裸体让男人桶全过程 | 久草在线综合网 | 亚洲福利在线视频 | 精品成人国产在线观看男人呻吟 | 黄色羞羞视频在线观看 | 最新av在线免费观看 | 一边吃奶一边摸下娇喘 | 黄色网址进入 | 龙床上的呻吟高h | 国产精品视频免费网站 | 一级在线观看 | 九九热免费精品 | 中午字幕无线码一区2020 | 男女羞羞视频在线观看免费 | 黄色成年在线观看 | 成人短视频在线播放 | 视频一区二区三区在线播放 | 成人福利在线观看 | 国产91一区二区三区 | 韩国一大片a毛片 | 国产精品久久久久一区二区 | 久久国产精品久久久久久 | 黄色网址免费在线 | 99麻豆久久久国产精品免费 | 国产成人自拍av | 久久一级 | 欧美精品久久久久久久久老牛影院 | 国产成人精品一区二区视频免费 | 一级做受毛片免费大片 | 91久久精品一区二区 | 欧美日本色 | 国产精品久久久久久模特 |