我想使用 azure java sdk 12.0.6 版本从容器中列出 blobs。为了获得良好的性能,我使用了类的async方法。BlobContainerAsyncClient
. 但我不能用该类列出blobs,而且我没有得到任何错误。
我的代码
ListBlobsOptions options = new ListBlobsOptions()
.setDetails(new BlobListDetails()
.setRetrieveDeletedBlobs(true)
.setRetrieveSnapshots(true));
client.listBlobs(options).subscribe(blob ->
System.out.printf("Name: %s, Directory? %b, Deleted? %b, Snapshot ID: %s%n",
blob.getName(),
blob.isPrefix(),
blob.isDeleted(),
blob.getSnapshot()));
关于这个问题,请参考以下代码。
ListBlobsOptions options = new ListBlobsOptions()
.setDetails(new BlobListDetails()
.setRetrieveDeletedBlobs(true)
.setRetrieveSnapshots(true));
lient.listBlobs(options).doOnNext(blob ->
System.out.printf("Name: %s, Directory? %b, Deleted? %b, Snapshot ID: %s%n",
blob.getName(),
blob.isPrefix(),
blob.isDeleted(),
blob.getSnapshot()))
.blockLast();
而且,不能同时叫两个 subscribe()
和 block()
. 当你打电话 subscribe()
还你 Disposable
允许你取消异步操作,但你不能在这个对象上阻塞。如果你想确保相关方法被阻塞,你只需调用 block()
的类型(该类型有一个 block()
方法是一个 Mono
或可 Flux
).
你应该尝试两件事。
Thread.sleep(5000)
调用后的调用。.subscribe()
呼叫 .block()
调用,实质上是将请求变回同步调用。