bboss提供一个简单实用的OSS对象存储库Mino操作组件,基于Mino java客户端封装,可以非常方便地实现:
- Mino数据源管理(初始化和销毁),支持多数据源管理
- 操作和访问Minio进行文件上传、下载、删除以及遍历等操作
两个主要组件:MinioHelper和Minio
org.frameworkset.nosql.minio.MinioHelper //用于管理Mino数据源(支持多数据源管理),创建和获取单实例多线程安全的Minio对象MinioHelper用于管理Mino数据源(支持多数据源管理),创建和获取单实例多线程安全的Minio对象,支持多Minio数据源
Minio minio = MinioHelper.getMinio("test");//获取指定名称数据源的Minio,单实例多线程安全通过minio提供的方法执行所有的Minio操作。本文示例代码对应的源文件:
导入bboss Minio和Mino客户端包,版本号均以官方发布最新版本号为准:
gradle
compile 'com.bbossgroups:bboss-data:6.3.7' maven
<dependency>
<groupId>com.bbossgroups</groupId>
<artifactId>bboss-data</artifactId>
<version>6.3.7</version>
</dependency> 导入Mino客户端包:需排除不必要的依赖包,避免冲突 gradle
api (group: 'io.minio', name: 'minio', version: '8.5.17'){
exclude group: 'com.fasterxml.jackson.jaxrs', module: 'jackson-jaxrs-json-provider'
exclude group: 'com.fasterxml.jackson.dataformat', module: 'jackson-dataformat-csv'
exclude group: 'com.fasterxml.jackson.module', module: 'jackson-module-scala_2.12'
exclude group: 'com.fasterxml.jackson.datatype', module: 'jackson-datatype-jdk8'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-databind'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-annotations'
exclude group: 'com.fasterxml.jackson.core', module: 'jackson-core'
}maven 自行参考gradle排除不必要的依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.17</version>
</dependency> 通过以下代码初始化了一个名称为chan_fqa的Minio数据源,后续的用该名称来引用对应的Minio数据源来执行各种Minio操作。
//1. 初始化Minio数据源chan_fqa,用来操作Minio数据库,一个Minio数据源只需要定义一次即可,后续通过名称chan_fqa反复引用,多线程安全
// 可以通过以下方法定义多个Minio数据源,只要name不同即可,通过名称引用对应的数据源
MinioConfig minioConfig = new MinioConfig();
minioConfig.setEndpoint("http://172.24.176.18:9000");
minioConfig.setName("miniotest");
minioConfig.setAccessKeyId("N3XNZFqSZfpthypuoOzL");
minioConfig.setSecretAccesskey("2hkDSEll1Z7oYVfhr0uLEam7r0M4UWT8akEBqO97");
minioConfig.setConnectTimeout(5000);
minioConfig.setReadTimeout(5000);
minioConfig.setWriteTimeout(5000);
minioConfig.setMaxFilePartSize(10*1024*1024*1024);
boolean result = MinioHelper.init(minioConfig);//启动初始化Minio数据源可以通过以下方法关闭Minio数据源并释放资源
通过数据源名称关闭
MinioHelper.shutdown("chan_fqa");通过ResourceStartResult参数关闭
MinioHelper.shutdown(MinioStartResult minioStartResult);createBucketf方法判断bulket是否存在,如果不存在则创建bulket
String bucket = "user_header_imgs";
minio.createBucket(bucket);使用Minio上传文件,返回自动创建的key或者提取指定的key,后续可以通过key获取bucket下的文件。如果对应的key已经存在则修改文件,否则创建文件:
try {
long s = System.currentTimeMillis();
String bucket = "user_header_imgs";
String key = minio.uploadObject("C:/data/filedown/xxxaaaa.txt",bucket);//保存文件,返回自动创建的key,可以通过key获取bucket下创建的文件
//String key = "xxxaaaa";
//key = minio.uploadObject("C:/data/filedown/xxxaaaa.txt",bucket,key);//指定key,如果不指定,自动生成一个key
long e = System.currentTimeMillis();
} catch (Exception e) {
throw new Exception("Send File failed:",e);
}minio提供了多种上传文件到Minio服务的方法,具体查看接口方法即可。
可以通过key获取bucket下的文件,并写入fileName对应的文件:
String bucket = "user_header_imgs";
String key = "xxxaaaa";
String fileName = "/data/imgs/jack.jpg";
minio.downloadObject(bucket,key,fileName);minio提供了一系列获取oss对象的方法,可以查看接口定义,选择合适的方法实现获取oss对象内容。
String bucket = "user_header_imgs";
String key = "xxxaaaa";
minio.deleteOssFile(bucket,key);//bucket, keyMinioClient minioClient = minio.getMinioClient()bboss etl&流处理框架中的文件输出插件,可以非常方便地使用Minio组件将生成的文件上传到Minio服务器。
通过bboss输入插件从各种类型的数据源采集数据,经过加工处理后,再通过文件输出插件将数据写入文件,然后调用Minio组件将生成的文件上传到Minio服务器,使用参考文档:
OSSConfig ossConfig = new OSSConfig();
ossConfig.setName("miniotest");
ossConfig.setAccessKeyId("N3XNZFqSZfpthypuoOzL");
ossConfig.setSecretAccesskey("2hkDSEll1Z7oYVfhr0uLEam7r0M4UWT8akEBqO97");
ossConfig.setEndpoint("http://172.24.176.18:9000");
ossConfig.setConnectTimeout(5000l);
// ossConfig.setHttpClient(OSSFileConfig.getHttpClient());
ossConfig.setMaxFilePartSize(10*1024*1024*1024);
ossConfig.setReadTimeout(5000l);
ossConfig.setWriteTimeout(5000l);
ossConfig.setSocketTimeout(5000l);
ossConfig.setConnectionAcquisitionTimeout(5000l);
ossConfig.setConnectionMaxIdleTime(5000l);
ossConfig.setPathStyleAccess(true);
ossConfig.setPoolMaxIdleConnections(10);
ossConfig.setTcpKeepAlive(true);
ossConfig.setRegion("east-r-a1");
boolean result = OSSHelper.init(ossConfig);
OSSClient ossClient = OSSHelper.getOSSClientDS(ossConfig.getName());
//获取bulket下文件的分享路径
String shareUrl = ossClient.getInternalDownloadUrl("etlfiles","HN_BOSS_TRADE000001_202503211019_000001.txt",100);
System.out.println(shareUrl);视频教程推荐

