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

MongoSocketReadException:过早到达流的末尾(在一段时间不活动之后)

许俊风
2023-03-14

在一段时间的不活动之后,我在一个find调用(默认Java驱动程序)中遇到了这个错误。我试图添加一个手动心跳(写入一个封顶的集合),但没有帮助。我只在连接到compose上的实例时才遇到问题(即,不在本地上下文中)。

MongoDB版本是3.2.8,最新的驱动程序(3.3),使用Java8。

知道吗?

共有3个答案

干弘深
2023-03-14

编辑应用程序。像这样的属性:

spring.data.mongodb.uri = mongodb+srv://username:password@solarsystem-1tpu0.mongodb.net/dbname

对于常规mongo实例(非集群),请使用以下方法:

spring.data.mongodb.uri = mongodb://username:password@solarsystem-shard-00-00-1tpu0.mongodb.net:27017,hostname2:27017/dbname?ssl=true
  • 如果要设置其他连接选项,可以使用
公羊曜灿
2023-03-14

我通过将sslEnabled设置为true来解决这个问题,代码示例:

@Bean
public MongoClient mongoClient() {
    List<ServerAddress> saList = new ArrayList<>();
    saList.add(new ServerAddress("cluster0-shard-00-00-75shm.gcp.mongodb.net", 27017));
    saList.add(new ServerAddress("cluster0-shard-00-01-75shm.gcp.mongodb.net", 27017));
    saList.add(new ServerAddress("cluster0-shard-00-02-75shm.gcp.mongodb.net", 27017));

    char[] pwd =  "password".toCharArray();
    MongoCredential credential = MongoCredential.createCredential("username", "admin", pwd);

    //set sslEnabled to true here
    MongoClientOptions options = MongoClientOptions.builder()
            .readPreference(ReadPreference.primaryPreferred())
            .retryWrites(true)
            .requiredReplicaSetName("Cluster0-shard-0")
            .maxConnectionIdleTime(6000)
            .sslEnabled(true)
            .build();

    MongoClient mongoClient = new MongoClient(saList, credential, options);     
    return mongoClient;
}

添加:我的客户端jar是org.mongodb.mongodb驱动程序3.6.4,服务器是GCP上的mongodb图集M0 3.6.6

韦原
2023-03-14

我在一些文档中找到了它:

对于长时间运行的应用程序,通常谨慎的做法是启用毫秒数的“保持存活”。没有它,一段时间后,你可能会开始看到“连接关闭”错误,这似乎是没有原因的。

检查这是否有帮助。当你连接到mongoDB你可以传递套接字选项给它。我来自节点背景,我们使用以下选项来保持它的活力。

server: {
        socketOptions: {
            keepAlive: 100,
            connectTimeoutMS: 30000
        }
    }

希望这有帮助!!

 类似资料:
  • 问题内容: 一段时间不活动后,在调用(默认Java驱动程序)时收到此错误。我尝试添加手动心跳(写到有上限的收藏集),但没有帮助。我只有在撰写时连接到实例时才收到问题(即不在本地上下文中)。 MongoDB版本为3.2.8,最新驱动程序(3.3),使用Java 8。 任何想法 ? 问题答案: 我同意Rhangaun的回答,这是我在JAVA代码中的解决方案: 这是我的研究链接:http: //3t.i

  • 在我的应用程序中,我使用MongoDB,它在本地与Wildfly 11.0.0一起工作得很好。Alpha1-部署在本地应用程序服务器和本地MongoDB数据库后,应用程序可以在上下文路径和端口上访问-一切都很好。 我的下一步是将这个应用程序部署到服务器maschine上的JBoss服务器上。我将MongoDB URI更改为MongoDB服务器: 如果我部署这个应用程序,我会在底部得到以下日志条目。

  • 我不知道确切的原因,但是我的tableview的滚动条永远不会结束。 这是桌面视图的中间,一切看起来都很好 但当我走到尽头 滚动条没有到达终点... 我想我的约束是可以的(我使用的是autolayout),因为除了滚动条,tableview显示得很好。 我的视图控制器是一个,只包含一个。下面是一个屏幕截图,总结如下: 代码未添加任何约束。你知道我怎么调试这个吗? 提前谢谢 编辑:我试图删除和重新创

  • 当我试图连接到MongoDB Atlas免费层时,我得到了一个过早到达流结束的错误。使用Java1.8和Mongo驱动程序3.8.0。这和Atlas中的集群设置有什么关系吗?我在MongoDB本地主机上使用了相同的程序。 错误:

  • 我在listview上体验过平滑滚动的奇怪行为。我的清单上有30个项目。当我平滑滚动通过 在屏幕的末尾会有一些额外的空间。实际上listview上移了一点。图片附后。但是如果我手动滚动,就没有空间了。如何解决这种行为? 这是我的布局:

  • 我有一个简单的数据结构(下面引用的)要插入到MongoDB中: 我得到以下错误堆栈: 我的mongodb版本是。 更新2 该系统可用于其他写入(即使是大得多的记录)