- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用例从 s3 读取文件并发布到 java 中的 rest 服务。
对于实现,我正在尝试使用 awssdk s3 API 读取返回 Flux<ByteBuffer>
的文件然后使用 Spring WebClient
发布到休息服务.
根据我的探索, Spring WebClient
需要可以使用 BodyInserters.fromDataBuffers
准备的 BodyInserter .我无法弄清楚如何将 Flux 正确转换为 Flux 并调用 WebClient 交换;
Flux<ByteBuffer> byteBufferFlux = getS3File(key);
Flux<DataBuffer> dataBufferFlux= byteBufferFlux.map(byteBuffer -> {
?????????????Convert bytebuffer to data buffer ??????
return dataBuffer;
});
BodyInserter<Flux<DataBuffer>, ReactiveHttpOutputMessage> inserter = BodyInserters.fromDataBuffers(dataBufferFlux);
有什么建议可以实现吗?
最佳答案
您可以使用 DefaultDataBuffer
进行转换您可以通过 DefaultDataBufferFactory
创建
DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
Flux<DataBuffer> buffer = getS3File(key).map(dataBufferFactory::wrap);
BodyInserter<Flux<DataBuffer>, ReactiveHttpOutputMessage> inserter =
BodyInserters.fromDataBuffers(buffer);
您实际上根本不需要 BodyInserter,但如果使用 Webclient,您可以为 body()
使用以下方法签名
<T, P extends Publisher<T>> RequestHeadersSpec<?> body(P publisher, Class<T> elementClass);
然后你可以通过你的 Flux<ByteBuffer>
直接进入,同时指定要使用的类
WebClient.create("http://someUrl")
.post()
.uri("/someUri")
.body(getS3File(key),ByteBuffer.class)
关于java - 如何将 ByteBuffer 的 Flux 转换为 Spring BodyInserter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61689699/
我正在使用 Sping webflux 模块并创建一个 WebClient,请求 uri 和请求正文如下: // create webclient WebClient wc3 = WebClient.
我有一个用例从 s3 读取文件并发布到 java 中的 rest 服务。 对于实现,我正在尝试使用 awssdk s3 API 读取返回 Flux 的文件然后使用 Spring WebClient 发
我是一名优秀的程序员,十分优秀!