gpt4 book ai didi

java - 一种优雅的异步解决方案,用于从 Java 中的 Vertx worker verticle 将文件从 S3 发送到客户端

转载 作者:行者123 更新时间:2023-12-04 03:42:21 25 4
gpt4 key购买 nike

我有一个 Vertx 服务器和一个 worker vertical 来异步处理 S3 操作的请求。我们需要一个解决方案来通过我们的服务器将文件从 S3 传输到客户端。前一个问题Streaming S3 object to VertX Http Server Response由 tsegismont 回答,但该建议似乎会阻止 Vertx 线程。文件传输属于一个单独的垂直领域。由于 RoutingContext 未按照 How can I send RoutingContext object from routing vertical to some other vertical using vertx.eventBus().send() method? 的建议跨总线发送,因此此推荐的解决方案在垂直工作人员中不起作用。 .请注意,这里推荐的创建特殊编解码器的解决方案似乎行不通,因为垂直工作线程需要 RoutingContext。

另一种解决方案是从 S3 获取对象。将其保存到文件。然后使用 WebClient API 中的 fileSend 方法发送给客户端。这...不是一个优雅的解决方案。

第三种解决方案是放弃 WorkerVertical 并使用 MainVertical 中的 blockingHandler 方法。这不是异步调用。该线程可能在几秒钟内不会被释放,并且比以前的解决方案更糟糕。

最佳答案

我不知道它是否适合您,但您可以使用预签名 url - https://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

我大部分时间所做的是使用 vertx 服务器处理协调并生成预签名的 url 以从 s3 获取/上传文件。

客户端获得预签名的 URL,可以直接下载/上传到 s3,同时通过后端保护实际凭证。

预签名 URL 的生命周期有限,您无需处理文件流/内存不足异常等即可获得 AWS 的所有可扩展性。

关于java - 一种优雅的异步解决方案,用于从 Java 中的 Vertx worker verticle 将文件从 S3 发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65757015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com