我正在尝试使用 RxJava 和 Vert.x 框架实现一个方法。
该方法的返回类型为Observable<String>
,但是当从方法bogy中的S3存储桶中获取一些数据时,它会返回S3Object
。
现在,我必须将S3Object
转换为Observable<string>
。 (我在S3存储桶中存储 JSON ,如abc.json)。
public Observable<String> getCustomerFroms3(String orderId) {
AWSCredentials credentials = new BasicAWSCredentials (
"*************MIIVCCCA",
"az4aBUp58x&&&&&&&&&&&&&&&&&&&3gUTw"
);
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider (credentials))
.withRegion(Regions.AP_SOUTH_1)
.build();
String bucketName = "database8";
S3Object s3Object = s3client.getObject(bucketName,orderId);
System.out.println(s3Object);
}
如何将S3Object
转换为Observable
?
答案 0 :(得分:1)
一种简单的方法是使用Observable
工厂方法从S3Object
内容中创建简单实例:
public Observable<String> getCustomerFroms3(String orderId) {
return Observable.create(
s -> {
try {
AWSCredentials credentials = new BasicAWSCredentials (
"*************MIIVCCCA",
"az4aBUp58x&&&&&&&&&&&&&&&&&&&3gUTw"
);
AmazonS3 s3client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider (credentials))
.withRegion(Regions.AP_SOUTH_1)
.build();
S3Object s3Object = s3client.getObject("database8", orderId);
s.onNext(IOUtils.toString(s3Object.getObjectContent()));
s.onComplete();
} catch (Exception e) {
s.onError(e);
}
}
);
}
请注意,这只是为了演示创建Observable
实例的方法,不应被视为最佳选择。