【发布时间】:2020-01-27 12:03:36
【问题描述】:
在编写应用程序的传统方式中,我将应用程序划分为一组任务并按顺序执行它们。
- 从 Redis 获取给定规则组的规则列表
- 构造事实输入并触发规则。
- 通过命中多个规则来计算请求的响应(规则组 A 可能取决于规则组 B 结果)。
- 将响应发回给调用者。
如果我是使用spring web Flux响应方式来实现上述步骤,我该如何实现呢?
我已经使用 ReactiveRedis 从 redis 中获取数据。 ReactiveRedisOperations.opsForValue().get(ruleGroupName) 在我们 subscribe() 之前不会返回任何内容。但是 ReactiveRedisOperations.opsForValue().get(ruleGroupName).subscribe() 使处理线程具有反应性,并且执行转到应用程序中的下一行,而无需等待订阅者执行。
由于我的下一步取决于 Redis 返回的数据,因此我使用了 block() 选项使其等待。
在现实世界中,人们如何应对这种情况?提前致谢。
PS:Spring Web Flux 和响应式编程的新手。
【问题讨论】:
-
从不阻塞,从不订阅(几乎)使用地图,平面地图,像回调一样思考,然后将单声道/通量返回给调用客户端。
-
@Thomas Andolf : 这是否意味着 map、flatmap 在从 ReactiveRedis 读取数据之前不会让处理线程进入下一行?
标签: spring-boot redis drools spring-webflux project-reactor