1. ホーム
  2. java

[解決済み] MongoSocketReadException。ストリームの終端に早く到達した (一定時間操作がなかった)

2022-01-28 19:21:51

質問

でこのエラーが発生します。 find の呼び出し(デフォルトのJavaドライバ)が、一定期間、非アクティブになった後です。手動でハートビート(キャップされたコレクションへの書き込み)を追加しようとしましたが、役に立ちませんでした。私は、composeでインスタンスに接続されている間(つまり、ローカルコンテキストでない)だけ問題が発生します。

MongoDBのバージョンは3.2.8、最新のドライバ(3.3)、Java 8を使用しています。

何か思い当たることはありますか?

解決方法は?

私はRhangaunの答えに同意します、ここでは私の解決策をJAVAのコードで示します。

    public static DB getMongoDB() {

        MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
        //build the connection options  
        builder.maxConnectionIdleTime(60000);//set the max wait time in (ms)
        MongoClientOptions opts = builder.build();


        char[] password2 = "mypassword".toCharArray();

        MongoCredential credential2 = MongoCredential.createCredential("username", "databasename",password2);


        //add your option to the connection 

        MongoClient mongoClient = new MongoClient(new ServerAddress("server ip",27017), Arrays.asList(credential2),opts);
        //use your database 
        cachedDb = mongoClient.getDB("databasename");

    return cachedDb;

}

以下は私の研究リンクです。 http://3t.io/blog/how-to-prevent-your-connection-from-dropping-with-hosted-mongodb-instances/

お役に立てれば幸いです。