Как конвертировать S3object в Observable - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь реализовать метод с RxJava и Vert.x framework.

Метод имеет Observable<String> в качестве возвращаемого типа, но когдаПри извлечении некоторых данных из корзины S3 в методе bogy он возвращает S3Object.

Теперь мне нужно преобразовать S3Object в Observable<string>.(Я храню JSON как abc.json в корзине S3).

 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?

1 Ответ

0 голосов
/ 04 июня 2018

Простым подходом будет использование фабричного метода 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 и не должен рассматриваться как оптимальный вариант.

...