从 Vert.x 4.5 开始,我应该使用什么来代替已弃用的 `Vertex#rxExecuteBlocking`?

问题描述 投票:0回答:1

Vert.x 4.5.0 开始,

Vertx#rxExecuteBlocking
(以及返回
executeBlocking
Maybe
签名)已弃用

我应该如何从 Vert.x

Future
(带有
Vertx#executeBlocking
)到 RxJava
Maybe
(或
Observable
)?

java rx-java vert.x
1个回答
0
投票

这是一个选项,尽管我不确定它是最合适的:

您可以通过定义如下的方法从某些计算密集型活动(例如

Future
😉)获得 Vert.x
Thread#sleep

private static final Vertx VERTX = Vertx.vertx();

private static Future<String> compute() {
  return VERTX.executeBlocking(() -> {
    Thread.sleep(1000);
    return "Done.";
  });
}

你可以获得像这样的

Maybe

final Maybe<String> maybe = MaybeHelper
  .toMaybe(handler -> compute().onComplete(handler));

作为附加说明,我想指出,

Maybe
Observable
的转换似乎可以使用
Maybe#toObservable
轻松解决,因此允许以下方法从
Observable中获取
Vertx#executeBlocking
 

final Observable<String> observable = MaybeHelper
  .toMaybe(handler -> compute().onComplete(handler))
  .toObservable();
© www.soinside.com 2019 - 2024. All rights reserved.