0

我正在尝试开发一个数据库服务代理并使用一个扩展 io.vertx.reactivex.core.AbstractVerticle 的 Verticle,以便我可以在数据库调用周围使用 rxJava 语义。问题是,当我编码生成服务代理时,我得到了这个:

ServiceVertxEBProxy.java:[37,1] a type with the same simple name is already defined by the single-type-import of io.vertx.core.Vertx

数据库服务负责处理共享的 dbclient,我正在这样做:

    public Single<SQLConnection> getConnection()
{
    JDBCClient dbClient = JDBCClient.createShared( vertx, CONFIG, DATASOURCE );

    return dbClient.rxGetConnection().flatMap( conn -> {
        Single<SQLConnection> connectionSingle = Single.just( conn );
        return connectionSingle.doFinally( conn::close );
    } );
}

是否可以使用@ProxyGen 创建一个在服务中引用 rxJava 的代理客户端?

作为参考,该接口声明了工厂方法以通过遵循 vertx.io 文档来实例化服务。

import io.vertx.reactivex.core.Vertx;

@ProxyGen
public interface ChatDbService
{
    static ChatDbService create( Vertx vertx )
    {
        return new ChatDbServiceImpl( vertx );
    }

    static ChatDbService createProxy( Vertx vertx, String address )
    {
        return new ChatDbServiceVertxEBProxy( vertx.getDelegate(), address );
    }

} 

帮助和洞察力将不胜感激。

4

2 回答 2

1

服务代理生成无法与 RxJava 一起使用,因为它使用 Vert.x 异步模型。由于您没有发布ServiceVertx界面,因此实际上不可能就您的应用程序向您提供进一步的建议,如果可以的话,我们可以进一步详细说明。

于 2018-09-10T12:07:21.090 回答
0

不确定这是否是您想要的,但我们想@ProxyGen为我们生成一个 Rxified API 并偶然发现了一个解决方案。我们发现您需要包含此依赖项,然后@ProxyGen将创建一个reactivex使用 Rxified 生成的服务调用的包。

    <dependency>
      <groupId>io.vertx</groupId>
      <artifactId>vertx-rx-java2</artifactId>
    </dependency>
于 2019-08-22T14:33:25.200 回答