Asynchronous 垂直链接异步逻辑?
有没有更明智的方法来编程下面的超级简单的set/get/close测试程序?请注意,我必须复制Redis close代码,并将其包含在set error path和get complete path中Asynchronous 垂直链接异步逻辑?,asynchronous,vert.x,Asynchronous,Vert.x,有没有更明智的方法来编程下面的超级简单的set/get/close测试程序?请注意,我必须复制Redis close代码,并将其包含在set error path和get complete path中 import io.vertx.core.Vertx; import io.vertx.redis.RedisClient; import io.vertx.redis.RedisOptions; public class RedisTest { public static void m
import io.vertx.core.Vertx;
import io.vertx.redis.RedisClient;
import io.vertx.redis.RedisOptions;
public class RedisTest {
public static void main(String[] args) throws Exception {
Vertx vertx = Vertx.vertx();
String host = "localhost";
final RedisClient client = RedisClient.create(vertx,
new RedisOptions().setHost(host));
client.set("key", "value", r -> {
if (r.succeeded()) {
System.out.println("key stored");
client.get("key", s -> {
if (s.succeeded()) {
System.out.println("Retrieved value: " + s.result());
} else {
System.out.println("Connection or Operation Failed " + s.cause());
}
System.out.println("Closing Redis connection");
client.close(t -> {
if (s.succeeded()) {
System.out.println("Redis closed successfully.");
} else {
System.out.println("Connection or Operation Failed " + t.cause());
}
System.out.println("Closing vertx");
vertx.close();
});
});
} else {
System.out.println("Connection or Operation Failed " + r.cause());
System.out.println("Closing Redis connection");
client.close(s -> {
if (s.succeeded()) {
System.out.println("Redis closed successfully.");
} else {
System.out.println("Connection or Operation Failed " + s.cause());
}
System.out.println("Closing vertx");
vertx.close();
});
}
});
System.out.println("Exiting main");
}
}
我建议查看反应式api
io.vertx.rxjava.redis.RedisClient
。对于链式计算来说,这是非常好的(它的主要用途)
例如(我没有测试过这段代码):
我建议查看反应式api
io.vertx.rxjava.redis.RedisClient
。对于链式计算来说,这是非常好的(它的主要用途)
例如(我没有测试过这段代码):
client.rxSet("key", "value")
.flatMap(r -> client.rxGet("key"))
//calls on error or success
.doAfterTerminate(() -> {
client.rxClose();
vertx.close();
})
.subscribe(
success -> System.out.println("Chain completed"),
//all errors will be there
error -> System.out.println(error.getMessage())
);