嗨,我的 Spring Boot 应用程序使用属性文件自动配置了 r2dbc 连接池:
spring.r2dbc.url=r2dbc:pool:postgres://localhost:5432/ecom
spring.r2dbc.username=xxx
spring.r2dbc.password=yyy</code></pre>
现在我需要获取一个 PostgresqlConnection 实例,我这样做:
this.connection = Mono.from(connectionFactory.create()).cast(PostgresqlConnection.class).block();
但是因为这是一个池配置,所以我收到了 ClassCastException 和以下包含所需 PostgresqlConnection 的 PooledConnection 对象:
PooledConnection[PostgresqlConnection{client=io.r2dbc.postgresql.client.ReactorNettyClient@14c93774, codecs=io.r2dbc.postgresql.codec.DefaultCodecs@62a68bcb}]
我需要访问 PostgresqlConnection 并使用它的原生功能,比如通知:
PostgresqlConnection connection = …;
Flux<Notification> listen = connection.createStatement("LISTEN mymessage")
.execute()
.flatMap(PostgresqlResult::getRowsUpdated)
.thenMany(connection.getNotifications());
问题是如何从 connectionFactory 正确获取 PostgresqlConnection 实例?任何帮助将不胜感激。