Я изучаю Vert.x с книгой "Vert.x в действии". Следуя этому примеру здесь:
https://github.com/jponge/vertx-in-action/tree/master/chapter6
Я хотел бы расширить сервис для использования PostgreSQL DB. Когда я изменяю только конструктор SensorDataServiceImpl с:
SensorDataServiceImpl(Vertx vertx) {
vertx.eventBus().<JsonObject>consumer("sensor.updates", message -> {
JsonObject json = message.body();
lastValues.put(json.getString("id"), json.getDouble("temp"));
});
}
на
SensorDataServiceImpl(Vertx vertx) {
PgConnectOptions connectOptions = new PgConnectOptions()
.setPort(5432)
.setHost("host")
.setDatabase("db")
.setUser("user")
.setPassword("pass")
.setSslMode(SslMode.VERIFY_CA)
.setPemTrustOptions(new PemTrustOptions().addCertPath("root.crt"));
PoolOptions poolOptions = new PoolOptions().setMaxSize(5);
io.vertx.reactivex.pgclient.PgPool dbPool = PgPool.pool(vertx, connectOptions, poolOptions);
Single<RowSet<Row>> single = dbPool.rxQuery(sqlQueries.get(SqlQuery.CREATE_PAGES_TABLE));
single.subscribe(result -> {
System.out.println("Got " + result.size() + " rows ");
}, err -> {
System.out.println("Failure: " + err.getMessage());
});
vertx.eventBus().<JsonObject>consumer("sensor.updates", message -> {
JsonObject json = message.body();
lastValues.put(json.getString("id"), json.getDouble("temp"));
});
}
, я получаю следующие проблемы:
-
PgPool.pool(vertx, connectOptions, poolOptions)
ожидает объект io.vertx.reactivex.core.Vertx
, поэтому я изменяю импорт на этот. - Но затем вызов
new SensorDataServiceVertxEBProxy(vertx, address)
в интерфейсе SensorDataService ожидает нормальный io.vertx.core.Vertx
в качестве параметра.
Знаете ли вы, как решить эту проблему?
Заранее спасибо!