【问题标题】:Find time between mono runnable subscribe call and runnable actually being executed查找 mono runnable subscribe 调用和 runnable 实际执行之间的时间
【发布时间】:2021-10-11 19:17:28
【问题描述】:

我有一个从可运行文件创建的单声道。我正在使用具有固定线程大小的 ExecutorService 来创建调度程序实例。我正在使用以下代码创建多个 Mono 并订阅它们。

Mono.fromRunnable(new Runnable() {
//Some business logic
}).subscribeOn(scheduler)

由于来自多个调用的调用,这些订阅可能并行发生,并且我们为所有这些调用使用一个通用的 ExecutorService,在订阅它和实际执行下面提到的“某些业务逻辑”块之间可能存在延迟由于为 ExecutorService 设置的线程大小有限。有没有办法找到订阅和实际执行线程之间的时间延迟?

【问题讨论】:

    标签: rxjs reactive-programming project-reactor reactor


    【解决方案1】:

    据我所知,没有内置方式,所以您可能会做的最好的事情是使用doOnSubscribe()(在Mono 对象上)保存一个时间戳,然后创建另一个时间戳作为第一行run() 中的 Runnable 方法。

    然后可以比较这些时间戳,以确定存在什么滞后(如果有)。

    【讨论】:

    • 嘿迈克尔,我试过了,但 doOnSubscribe() 和 runnable 在分配后都由同一个线程执行。所以,它没有给出我所期望的滞后细节。
    • 尝试使用doFirst 而不是doOnSubscribe,这会触发Subscriber#onSubscribe 方法(与.subscribeOn(Scheduler) 的影响相比,在生命周期中已经太晚了)。编辑:还要确保doFirst之后 subscribeOn
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多