当前位置: 首页 > 知识库问答 >
问题:

从Spring Boot应用程序连接MongoDB副本只读辅助

艾星河
2023-03-14

我们得到了一个mongodb副本集,它有三个节点(比如a、B、C)。当a和B关闭时,mongo将节点C设置为只读(这很好!)

我们的要求是,当只有只读待机节点可用时(没有主节点),应用程序仍应继续在只读模式下工作。

如果我使用java MongoClient库与mongo客户端连接操作?ReadPreference=SecondaryPreference,客户端程序能够连接到mongo并从只读的次节点读取数据(没有预期的写入)。

但是如果我从Spring Boot应用程序尝试相同的操作,而应用程序引导Mongo客户端无法连接到可用的只读辅助程序,tt会抛出以下错误。在Spring boot应用程序中是否有任何参数可以传递给其他应用程序,以让应用程序知道它需要连接到只读辅助程序?

----应用程序.属性----

spring.data.mongodb.uri=mongodb://10.9.9.71:27017,10.9.9.71:27018,10.9.9.71:27019/?readpreference=secondarypreferend

如有任何帮助,我们将不胜感激。

共有1个答案

丁茂
2023-03-14

哦,天哪,终于知道它为什么失败了。

在我的mongo实体pojo中,有用于生成索引等的注释,所以在Spring Boot带期间,这些实体正在初始化并尝试写入数据库。而这就是Spring Bootstrap的失败..

 类似资料:
  • 另一个解决方案是启动一个mysql docker容器并指定它的名称来代替localhost...但是我不想启动mysql docker容器,因为我已经安装了mysql(并且需要卷配置来保持数据持久化) 提前道谢。

  • 从。NET应用程序连接到远程MongoDb实例有点困难。 我创建了一个非常简单的控制台应用程序,它基本上是一个冒烟测试,并带回一个项目。如果我在运行MongoDb服务的服务器上运行它,它将与MongoDb进行对话,不会有任何问题。ConnectionString就是。 我已经为服务器上的27017端口创建了一个inboudd规则,甚至完全关闭了防火墙。 Mongo服务器的cfg文件非常基本: 干杯

  • 喂,伙计们! 这是我的第一次,所以我会尽力做到最好。 我想创建一个应用程序,它是运行与Springboot框架,我想把它连接到一个docker容器嵌入MySQL(但Spring启动应用程序不是运行在docker) 所以我一直关注这个帖子 我已经做了我的docker-comact: 我用这个命令运行它: 一切都很好,所以现在我在Spring靴上改变application.properties: 但当

  • 我正在使用Spring引导应用程序连接MongoDB实例。我们已在MongoDB上启用了以下角色的身份验证 角色:[ { role: "dbOwner ",db: "{{ mongo.database_name }}" } 角色:[ { role: "readWrite ",db: "{{ mongo.database_name }}" } 我们使用conf文件提供凭证 数据: mongodb。u

  • 尝试使用主连接字符串和用户名(数据库名)连接到cosmosdb Mongo API 原因:com.mongodb.mongotieoutexception:在等待与com.mongodb.client.internal.mongoclientdelegate$1@3C291AAD匹配的服务器时,在30000 ms后超时。群集状态的客户端视图是{type=replica_set,servers=[{

  • 问题内容: 我是新手。 我有一个mysql rds实例,我刚刚创建了2个只读副本。我的应用程序是用Java编写的,到目前为止我所做的是使用已连接到一个aws实例的JDBC,但是现在如何在三台服务器之间分配工作? 问题答案: 您可以设置内部Elastic Load Balancer 将轮询请求轮换到从站。然后在代码中配置两个连接:一个直接指向主机进行写入,另一个指向ELB端点进行读取。 或者,如果您