0
Gibt es einen vernünftigeren Weg, das folgende supereinfache set/get/close Testprogramm zu programmieren? Beachten Sie, dass ich den Redis-Close-Code duplizieren und in den Set-Error-Pfad und den Get-Complete-Pfad einbeziehen musste.vert.x verkettet asynchrone Logik?
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");
}
}