Я получил довольно маленький Verticle, который должен подключаться к базе данных, регулярно опрашивать таблицу и отправлять объекты на шину событий. Пока что я могу подключиться к базе данных, но впоследствии обработчик не выполняется, и мой таймер опроса не запускается. Я думаю, это что-то очевидное, и я ценю любую помощь.
Я использую Vert.x 3.8 Обещания , поскольку фьючерсы устарели (как в примере за этой ссылкой). Как вы можете видеть из моего кода, использование устаревших Futures прекрасно работает ! Но кто хочет использовать устаревший код, а? Либо я делаю что-то не так, либо это ошибка в Vert.x, чего я не предполагаю.
Мой Vert.x находится на 3.8.1
class JdbcVerticle extends AbstractVerticle {
private SQLConnection connection
@Override
void start(Promise<Void> startPromise) {
def jdbcParams = config().getJsonObject('connection')
// This gets executed:
testFuture().handler = { println "Test Future handler runs!" }
// This is never executed :-(
connect(jdbcParams).handler = { println "Connected..." }
}
Future<Void> connect(JsonObject jdbcParams) {
def promise = Promise.<Void>promise()
def client = JDBCClient.createShared(vertx, jdbcParams)
client.getConnection() { connection ->
if(connection.failed()) {
promise.fail(connection.cause())
} else {
this.connection = connection.result()
promise.complete()
}
}
return promise.future()
}
Future<Void> testFuture() {
def future = Future.<Void>future()
vertx.setTimer(200) { future.complete() }
return future
}
}