Spring R2DBC不支持多主机/故障转移。

4
在我的项目中,我正在使用spring r2dbc,并尝试将其与多主机/故障转移postgres拓扑结构配合使用;换句话说,数据库URL应该像这样:r2dbc:postgresql:failover://host1,host2,host3:port/
我正在使用spring boot的2.7.5版本,其中包含以下库:
  • r2dbc-pool-0.9.2.RELEASE
  • r2dbc-spi-0.9.1.RELEASE
  • r2dbc-postgresql-0.9.2.RELEASE
据我所知,这组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查询 DELETE FROM my_table WHERE boolean_flag = $1 的结果是,r2dbc库存在某些兼容性问题。是否有一组可以在我的情况下工作的这些库的工作集合或等待新的Spring发布是我的唯一选择?

1个回答

1

截至Spring Boot版本2.7.5(据我所知,任何低于3.0.0的版本),在您的项目中没有有效的选项来使用postgres/spring boot/r2dbc/多主机故障转移组合。目前不支持。

但好消息是,在即将发布的Spring Boot 3.0.0版本中应该会支持它。

引用r2dbc gitter的活跃成员Mark Paluch的话:

R2DBC 1.0由Spring Framework 6/Spring Data R2DBC 3.0支持,因为R2DBC 0.9和1.0之间存在二进制兼容性变化


我们可以通过一些额外的配置来实现对于Spring 2.7.xxx的R2DBC故障转移支持吗? - Mikhail Geyer
我们能通过一些额外的配置来实现对Spring 2.7.xxx的R2DBC故障转移支持吗? - undefined
据我所知,不,这是不可能的。唯一的选择是迁移到Spring 6 / Spring Boot 3。 - mr.nothing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接