我有一个类,它从通量源填充地图。我希望能够动态地更新thedata(),但我希望能够返回解析为当前或挂起数据的Mono。
基本上如果数据!=null和no in progress flux,返回Mono。仅返回(数据),否则返回最终将发出数据的单声道。
编辑:这是目前为止我能做的最好的了
class SomeClass {
private Mono<Map<String, Data>> theData;
private final SomeFluxService someFluxService = new SomeFluxService();
public SomeClass() {
updateTheData();
}
public void updateTheData() {
someFluxService.get()
.collectMap(Data::getId, Function.identity())
.subscribe(d -> this.theData = Mono.just(d));
}
public Mono<Map<String, Data>> getTheData() {
return this.theData;
}
}
但是仍然存在一个问题,在第一次完成updateTheData()之前,getTheData()将返回null
帮助赞赏!
但是仍然存在一个问题,在第一次完成updateTheData()之前,getTheData()将返回null
这是因为您在订阅方法中使用消费者仅在发出数据时更新
然后立即将其分配给您的字段:Mono
。这是一种有点奇怪的方法,最好简单地cache()
Mono
public void updateTheData() {
theData = someFluxService.get()
.collectMap(Data::getId, Function.identity())
.cache();
}
更进一步,如果您的要求是每隔x
秒更新一次数据,而不是按需更新,您可以将其传递给缓存函数并完全取消单独的方法:
public NewClass() {
theData = someFluxService.get()
.collectMap(Data::getId, Function.identity())
.cache(Duration.ofMinutes(5));
}
public Mono<Map<String, Data>> getTheData() {
return theData;
}
想象一下,我有一个CourseID对象列表(CourseID,Name)。让我们把这个列表称为'CourseNameList'。 当某人将请求发送到“ 然而,在发送结果之前,我还需要追加每个课程的价格。价格将从另一个微服务中检索,并返回Mono对象。 因此,用户将看到带有(ID、名称、价格)的课程列表。价格来源于其他服务。 控制器方法可能如下所示 我尝试了多种方法来返回Flux。但是,我不知道怎么
有些方法返回。这是一个典型的模式,分多个层: 假设返回一个(它向数据库写入一些内容,发送一条消息等)。如果我只是用替换它,那么一切都按预期工作,否则就不是这样了。更具体地说,单声道从未完成,它贯穿所有处理,但在结束时错过了终止信号。所以这些东西实际上是写在数据库中的,消息实际上是发送的,等等。 为了证明没有终止是问题所在,这里有一个有效的黑客: null 我不能在应用程序之外用简单的单工作流复制这
本文向大家介绍MySQL如何创建触发器,包括了MySQL如何创建触发器的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了MySQL创建触发器的具体代码,供大家参考,具体内容如下 先来个实例: 实例解析: 先创建触发器中待存储的表t_attendance DELIMITER $ 意思是告诉mysql下文执行语句以“$”结束,如果没有这句,下面语句会出错,mysql无法判断哪句
我有两项要求: 有了这些,我想做以下工作: 当我调用它时,我得到以下输出: 当然,由于异步单声道映射,流在结果实际出现之前就关闭了。我怎样才能保持这个非阻塞,但也确保结果在调用上完成之前到达?
我的REST控制器方法应该返回Mono,它必须由两个并行请求构建到另一个web服务,并处理它们的响应,其中一个请求返回Mono,另一个请求返回Flux 如何将单声道的响应与熔剂的响应结合起来进行处理? 显然,控制器是错误的,因为: 1)接受2个或更多的Mono,其中我有Mono和Flux-如何将它们组合起来? 2)也不确定: 是否正确? 有什么建议吗?
我正在尝试获得另一个功能是提交按钮IE。class=“sucessclass”将在成功或完成时执行。下面是我的代码: