Vert.x Rx例子

Vert.x Rx

不喜欢回调的方式写代码吗?vertx提供了Rx-ified如果你更喜欢。

Rxjava是一个不错的选择,当你希望在异步数据流上做更复杂的操作。

JsonObject config = new JsonObject().put("url", "jdbc:hsqldb:mem:test?shutdown=true")
        .put("driver_class", "org.hsqldb.jdbcDriver");

    JDBCClient jdbc = JDBCClient.createShared(vertx, config);

    // 连接数据库
    jdbc.getConnectionObservable().subscribe(
        conn -> {

          // 首先有一批操作用flatmap的方式组合
          Observable<ResultSet> resa = conn.updateObservable("CREATE TABLE test(col VARCHAR(20))").
              flatMap(result -> conn.updateObservable("INSERT INTO test (col) VALUES ('val1')")).
              flatMap(result -> conn.updateObservable("INSERT INTO test (col) VALUES ('val2')")).
              flatMap(result -> conn.queryObservable("SELECT * FROM test"));

          // 其次订阅上面的resa的返回结果
          resa.subscribe(resultSet -> {
            // 输出结果
            System.out.println("Results : " + resultSet.getRows());
          }, err -> {
            System.out.println("Database problem");
            err.printStackTrace();
          }, conn::close);
        },

        // Could not connect
        err -> {
          err.printStackTrace();
        }
    );






你可能感兴趣的:(Vert.x Rx例子)