当前位置:   article > 正文

FastDFS引入连接池fastdfs-client_fastfilestorageclient 注入

fastfilestorageclient 注入

在上篇《记一次fastdfs高并发下上传失败的问题》文章中,我改造了我的程序,本以为是成功解决了dfs在高并发情况下的io问题,但是这个问题解决的不彻底,有时候还会出现。所以我决定引入连接池。

我用的是tobato大神写连接池,在这里简单介绍一下,具体大家可以直接去看源码

地址:GitHub - tobato/FastDFS_Client: Java Client for FastDFS

FastDFS论坛:FastDFS FAQ (欢迎反馈,我将及时整理) - 分布式文件系统(FastDFS)-Chinaunix

主要特性

  1. 对关键部分代码加入单元测试,理解与服务端的接口交流,提高接口质量
  2. 将以前对字节解析样式为使用对象+注解解的形式,努力增强了代码的硬性
  3. 支持对服务端的连接池管理(commons-pool2)
  4. 支持上传图片时检查图片格式,并且自动生成
  5. 在SpringBoot中自动导入依赖

使用接口服务对dfs服务端进行操作

主要接口包括

  1. TrackerClient - TrackerServer 接口
  2. GenerateStorageClient - 一般文件存储(StorageServer接口接口)
  3. FastFileStorageClient - 为方便项目开发集成的简单接口(StorageServer接口)
  4. AppendFileStorageClient - 支持文件续传操作的接口(StorageServer接口)

Maven 依赖

  1. <dependency>
  2.     <groupId>com.github.tobato</groupId>
  3.     <artifactId>fastdfs-client</artifactId>
  4.     <version>1.27.2</version>
  5. </dependency>

application.yml配置

配置参数可以根据配置情况自行调整

  1. # 分布式文件系统FDFS配置
  2. fdfs:
  3. #读取时间
  4. so-timeout: 20000
  5. #连接超时时间
  6. connect-timeout: 20000
  7. thumb-image: #缩略图生成参数
  8. width: 150
  9. height: 150
  10. tracker-list: #TrackerList参数,支持多个
  11. - 127.0.0.1:22122
  12. pool:
  13. #从池中借出的对象的最大数目(配置为-1表示不限制)
  14. max-total: 30
  15. #每个key最大连接数
  16. max-total-per-key: 25
  17. #每个key对应的连接池最大空闲连接数
  18. max-idle-per-key: 10
  19. #每个key对应的连接池最小空闲连接数
  20. min-idle-per-key: 5

使用方式

直接注入对象调用api即可

  1. 注入FastFileStorageClient对象,直接调用api即可
  2. /**
  3. * 上传一般文件
  4. *
  5. * @param inputStream
  6. * @param fileSize
  7. * @param fileExtName
  8. * @param metaDataSet
  9. * @return
  10. */
  11. StorePath uploadFile(InputStream inputStream, long fileSize, String fileExtName, Set<MetaData> metaDataSet);
  12. /**
  13. * 上传图片并且生成缩略图
  14. * <pre>
  15. * 支持的图片格式包括"JPG", "JPEG", "PNG", "GIF", "BMP", "WBMP"
  16. *
  17. * 缩略图为上传文件名+缩略图后缀 _150x150,如 xxx.jpg,缩略图为 xxx_150x150.jpg
  18. *
  19. * 实际样例如下
  20. *
  21. * 原图 http://localhost:8098/M00/00/17/rBEAAl33pQaAWNQNAAHYvQQn-YE374.jpg
  22. * 缩略图 http://localhost:8098/M00/00/17/rBEAAl33pQaAWNQNAAHYvQQn-YE374_150x150.jpg
  23. *
  24. * </pre>
  25. *
  26. * @param inputStream
  27. * @param fileSize
  28. * @param fileExtName
  29. * @param metaDataSet
  30. * @return
  31. */
  32. StorePath uploadImageAndCrtThumbImage(InputStream inputStream, long fileSize, String fileExtName,
  33. Set<MetaData> metaDataSet);
  34. /**
  35. * 上传图片
  36. * <pre>
  37. * 可通过fastImageFile对象配置
  38. * 1. 上传图像分组
  39. * 2. 上传元数据metaDataSet
  40. * 3. 是否生成缩略图
  41. * 3.1 根据默认配置生成缩略图
  42. * 3.2 根据指定尺寸生成缩略图
  43. * 3.3 根据指定比例生成缩略图
  44. * <pre/>
  45. *
  46. * @param fastImageFile 上传文件配置
  47. * @return
  48. */
  49. StorePath uploadImage(FastImageFile fastImageFile);
  50. /**
  51. * 上传文件
  52. * <pre>
  53. * 可通过fastFile对象配置
  54. * 1. 上传图像分组
  55. * 2. 上传元数据metaDataSet
  56. * <pre/>
  57. * @param fastFile
  58. * @return
  59. */
  60. StorePath uploadFile(FastFile fastFile);
  61. /**
  62. * 删除文件
  63. *
  64. * @param filePath 文件路径(groupName/path)
  65. */
  66. void deleteFile(String filePath);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/169851
推荐阅读
相关标签
  

闽ICP备14008679号