Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringCloud AWS RDS Aurora的SpringBoot应用程序-如何分发读取查询_Java_Spring Boot_Amazon Aurora_Spring Cloud Aws - Fatal编程技术网

Java 使用SpringCloud AWS RDS Aurora的SpringBoot应用程序-如何分发读取查询

Java 使用SpringCloud AWS RDS Aurora的SpringBoot应用程序-如何分发读取查询,java,spring-boot,amazon-aurora,spring-cloud-aws,Java,Spring Boot,Amazon Aurora,Spring Cloud Aws,我有一个使用AWS RDS DB的Spring Boot应用程序 我正在尝试让RDS Aurora/Postgres DB处理读取副本。我已经让应用程序运行,但是我看不到任何流向读卡器节点的流量 设置为Spring boot(2.2.7)、Spring cloud aws 2.2.4-RELEASE、Spring data(JpaRepository) RDS Aurora群集具有2个节点、1个读卡器和1个写卡器,如下所示: 用@Transactional(readOnly=true) @Re

我有一个使用AWS RDS DB的Spring Boot应用程序

我正在尝试让RDS Aurora/Postgres DB处理读取副本。我已经让应用程序运行,但是我看不到任何流向读卡器节点的流量

设置为Spring boot(2.2.7)、Spring cloud aws 2.2.4-RELEASE、Spring data(JpaRepository)

RDS Aurora群集具有2个节点、1个读卡器和1个写卡器,如下所示:

@Transactional(readOnly=true)

@RequestMapping(
value=“/counters”,
生成={“应用程序/json”},
method=RequestMethod.GET
)
@应答器
@事务(只读=真)
公众响应getCounters(){
返回ResponseEntity.of(可选)(this.counterDAO.findAll());
}
最后是SpringCloudAWS配置

cloud:
  aws:
    region:
      static: ap-southeast-2
    credentials:
      accessKey: ${ACCESS_KEY}
      secretKey: ${SECRET_KEY}
    rds:
      rds-db-cluster-instance-1:
        password: ${POSTGRES_PASSWORD}
        username: postgres
        readReplicaSupport: "true"
        databaseName: postgres
    stack:
      auto: false
此时,我可以从DB读写,但是我看不到任何证据表明它正在使用reader节点

只有当我使用writer实例名作为
cloud.aws.rds.
时,应用程序才会启动。使用集群名(使用writer id可能是配置它的正确方法,文档并不十分清楚)时,如果我使用只读实例id,则更新DB的方法会失败

AWS控制台上的监控仅显示Writer节点上的连接(我可以通过两个线程调用get和POST方法将连接增加到10-15个),但是Reader节点始终为0

其次,我用类上的调试器设置了断点,这些断点永远不会被命中,所以我很确定它没有使用只读功能


我相当确定这是由于我正在使用的实例id造成的,可能与基础RDS配置有关,但我一辈子都无法解决这一问题。

事实证明,问题在于使用RDS Aurora群集,而不是使用具有读取副本的RDS实例,这个问题是RDS群集功能请求。我将保留这个问题,肯定会有一种方法可以配置多个数据源来使用Aurora