我正在尝试开发一个数据库服务代理,并使用扩展io.vertx.reactivex.core.AbstractVerticle的顶点,以便我可以在数据库调用中使用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
数据库服务负责处理共享数据库客户端,我通过以下方式执行此操作:
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 );
}
}
帮助和见解将不胜感激。
服务代理生成无法使用 RxJava,因为它使用 Vert.x 异步模型。由于您没有发布ServiceVertx
界面,因此实际上不可能为您提供有关您的应用程序的进一步建议,如果可以的话,我们可以进一步详细说明。
不确定这是否是您想要的,但我们希望@ProxyGen
为我们生成一个 Rxized API,并偶然发现了一个解决方案。我们发现你需要包含此依赖项,然后@ProxyGen
将使用 Rxified 生成的服务创建一个名为reactivex
的包。
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-rx-java2</artifactId>
</dependency>