Java多数据Jdbc和R2dbc问题

Posted

技术标签:

【中文标题】Java多数据Jdbc和R2dbc问题【英文标题】:Java multiple data Jdbc and R2dbc problem 【发布时间】:2021-06-15 12:32:10 【问题描述】:

我写了一个项目,在那里我使用了 r2dbc 和 jdbc。现在数据库有问题。我怎样才能将它们分开?信息来了却报错

Operator called default onErrorDropped

Application.yml

   spring:
     liquibase:
       enabled: true
       url: jdbc:postgresql://localhost:5432/liquebase
       user: postgres
       password: 12345
       change-log: classpath:db/liquibase/db.changelog-master-main.yml
     datasource:
       driver-class-name: org.postgresql.Driver
       hikari:
       minimum-idle: 5
     r2dbc:
       url: r2dbc:postgresql://127.0.0.1:5432/liquebase
       username: postgres
       password: 12345
       pool:
         initial-size: 100
         max-size: 500
         max-idle-time: 30m
        validation-query: SELECT 1


  server:
    port: 8085

【问题讨论】:

【参考方案1】:

据我所知,您只能使用一个数据源。但是您可以在配置application.yml 上配置两者并在它们之间切换。像这样的:

spring:
  profiles:
    active: dev00
---
spring:
  config:
    activate:
      on-profile: dev00
    liquibase:
      enabled: true
      url: jdbc:postgresql://localhost:5432/liquebase
      user: postgres
      password: 12345
      change-log: classpath:db/liquibase/db.changelog-master-main.yml
    datasource:
      driver-class-name: org.postgresql.Driver
      hikari:
      minimum-idle: 5
    server:
      port: 8085
---
spring:
  config:
    activate:
      on-profile: dev01
    r2dbc:
      url: r2dbc:postgresql://127.0.0.1:5432/liquebase
      username: postgres
      password: 12345
      pool:
        initial-size: 100
        max-size: 500
        max-idle-time: 30m
        validation-query: SELECT 1
    server:
      port: 8085

然后您通过配置spring.profiles.active: dev00spring.profiles.active: dev01 来决定使用哪一个。这个sample project 给你一个很好的源代码。

【讨论】:

以上是关于Java多数据Jdbc和R2dbc问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 R2DBC 进行数据库迁移

(WebFlux)003多数据源R2dbc事务失效分析

(WebFlux)003多数据源R2dbc事务失效分析

(WebFlux)003多数据源R2dbc事务失效分析

JOOQ r2dbc 获取数据:无法解码具有 OID 51968 的 java.lang.String 类型的值

MYSQL R2DBC 的 Spring Data 多主机设置