Azure Blob存储Java SDK:为什么异步不起作用?

时间:2019-04-10 05:52:52

标签: java azure kotlin azure-storage azure-storage-blobs

我仍在讨论Azure Storage Java SDK 10及其对反应式编程的使用。我编写了以下方法,以尽可能快地将blob异步下载到字节流。当我使用同步版本(如下)时,它可以正常工作。当我注释掉blockingAwait()并取消注释订阅时,将永远不会执行write和doOnComplete ...基本上,运行只是从方法底部退回到调用者。我确信我犯了一个异步处理错误,并希望有人可以引导我朝正确的方向发展。顺便说一下,我很惊讶地发现下载到流而不是文件的样本很少。希望这篇文章对其他人有帮助。

感谢您的时间和对我问题的关注...

CountryModel

这是调用上述方法的代码:

override fun downloadBlob(url: String, downloadStream: OutputStream) {

    BlockBlobURL(URL(url), pipeline)
            .download(null, null, false, null)
            .flatMapCompletable { response ->
                FlowableUtil.collectBytesInBuffer(response.body(null))
                        .map {
                            Channels.newChannel(downloadStream).write(it)
                        }.toCompletable()
            }.doOnComplete {
                println("The blob was downloaded...")
            }.blockingAwait()
            //.subscribe()
}

0 个答案:

没有答案