[英]Failed to obtain R2DBC, this publisher does not support multiple subscribers
[英]Spring R2DBC doesn't support multiple host/failover
我在我的项目中使用 spring r2dbc 并试图让它与多个主机/故障转移 postgres 拓扑一起工作; 换句话说,db url 是这样的: r2dbc:postgresql:failover://host1,host2,host3:port/
我正在使用 2.7.5 版本的 spring 引导,并得到:
r2dbc-pool-0.9.2.RELEASE
r2dbc-spi-0.9.1.RELEASE
r2dbc-postgresql-0.9.2.RELEASE
作为 spring 启动的一部分。
据我了解,这组 r2dbc 库尚不支持故障转移,因为我看到错误指出无法解析此类 url。
我尝试将r2dbc-postgresql-0.9.2.RELEASE
升级到1.0.0.RC1
但出现以下错误:
class java.lang.Long cannot be cast to class java.lang.Integer
(java.lang.Long and java.lang.Integer are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.Integer
(java.lang.Long and java.lang.Integer are in module java.base of loader 'bootstrap')
作为执行简单delete query DELETE FROM my_table WHERE boolean_flag = $1
这间接说明 r2dbc 库中存在一些兼容性问题。 如果有这些库的工作集可以在我的情况下工作或者正在等待新的 spring 版本是我唯一的选择,谁能指导我?
从 Spring 引导版本 2.7.5(据我所知低于 3.0.0 的任何版本),在您的项目中没有使用 postgres/spring boot/r2dbc/多主机故障转移组合的有效选项。 只是暂时不支持。
不过好在即将发布的Spring boot 3.0.0版本应该会支持。
引用 r2dbc gitter 的活跃成员 Mark Paluch的话:
Spring Framework 6/Spring Data R2DBC 3.0 支持 R2DBC 1.0,因为 R2DBC 0.9 和 1.0 之间存在二进制兼容性更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.