micronaut - Micronaut Reactive Streams:不维持排放率
问题描述
我正在尝试测试每个元素延迟 1000 毫秒的 Flux 流。
@Get(value = "/carts/reactive", produces = MediaType.APPLICATION_JSON_STREAM)
public Flux<Cart> getCartsReactive() {
return Flux.range(1, 10)
.map(integer -> Cart.builder().name("cart" + integer).build())
.delayElements(Duration.ofMillis(1000))
.doOnNext(cart -> log.info("Returning Flux of cart: " +cart));
}
当我点击服务时,我在 10 秒内没有得到响应并得到响应的博客。
curl http://localhost:7070/carts/reactive
{"name":"cart1"}{"name":"cart2"}{"name":"cart3"}{"name":"cart4"}{"name":"cart5"}{"name":"cart6"}{"name":"cart7"}{"name":"cart8"}{"name":"cart9"}{"name":"cart10"}
这是一个错误吗?为什么它不每秒发出 1 个购物车?
解决方案
正如您编写的那样,您的代码没有任何问题 - 这是一个使用 micronaut + reactor 的完整项目,控制器中的代码正是该代码:
https://github.com/berry120/micronaut-reactive-demo
正如预期的那样,它一次生成一个元素,延迟一秒:
您可以将该项目与您自己的项目进行比较,以查看您可能缺少哪些配置/代码导致其无法正常工作。我根本没有对上述项目做任何特别的事情——这纯粹是从 Micronaut 初始化程序创建的,包括反应堆附加组件。
请注意,您应该配置 micronaut-reactor 模块 ( implementation("io.micronaut.reactor:micronaut-reactor")
) 而不是仅仅将 reactor 作为第三方依赖项包括在内,否则可能会导致问题。
推荐阅读
- javascript - 奇怪的 react-dnd 行为(或拖放 HTML5?)
- javascript - 仅在页面重新加载后帖子才可删除的问题
- python - matplotlib RGB图像不同的cmap?
- javascript - Reactjs:警告:组件正在更改受控
- python - “将目录标记为源根目录”到底有什么作用?
- asp.net-core - 在 JWT (Identity Server 4) 中添加 RememberMe 值作为声明
- excel - 每次都取消保护工作表以输入或删除数据,这是不可取的
- angular - 使用角度反应形式上传多个文件
- nlp - POS标记spaCy中的单个单词
- javascript - 如何使用旧 JavaScript 从表示 URL 的文本变量中正确删除此 URL 部分?