2017-05-16 10 views
1

Mongodbがダウンすると、スプリングブートアプリケーションがダウンしています。私はconnectiontimeoutの例外を処理し、アプリケーションを停止することなくエラーを記録したい。 接続が不可能なためデータベースから項目を見つけることができなかった場合、アプリケーションはデータを見つけるためにWebサービスを呼び出すような別の処理を行う必要があります。 これについてお知りになりましたか?スプリングブート:mongodb timeoutExceptionの処理

設定

spring.data.mongodb.uri =のMongoDB:// $ {MONGODB_DB_HOST}:$ {MONGODB_DB_PORT}/$ {} MONGODB_DB_DATABASE connectTimeoutMS = $ {} mongodb.connection.timeout

+0

の下に定義します。したがって、いくつかのことに依存します 1.起動時にいつ実行しますか? 2.あなたのmongoconfigurationはSpringBoot AutoConfigurationによってどのように設定されているのか、または手動で設定していますか? – pvpkiran

+0

私の設定はスプリングブート自動設定によるものです。 そして、私はデータベースからの検索が失敗したときにWebサービスを呼びたいと思っています。 設定を – NAZEHA

+0

で更新しましたので、起動後に例外を処理したい – NAZEHA

答えて

-2

以下のサンプル・サンプルを使用して、mongodbタイムアウトを構成できます。私はspringbootのbean annonationへの変換が容易であることを願っています。そうでなければ私は春ブーツでMongoDBの接続を設定するためのコードの下に

を使用しているリソース豆(@ImportResource)

<beans> 

    <mongo:mongo host="localhost" port="27017"> 
    <mongo:options connections-per-host="8" 
        threads-allowed-to-block-for-connection-multiplier="4" 
        connect-timeout="1000" 
        max-wait-time="1500}" 
        auto-connect-retry="true" 
        socket-keep-alive="true" 
        socket-timeout="1500" 
        slave-ok="true" 
        write-number="1" 
        write-timeout="0" 
        write-fsync="true"/> 
    </mongo:mongo/> 

</beans> 
+0

例外を処理するという質問にどのように答えますか?この設定は、mongo接続のタイムアウトを設定するだけです。これはプロパティファイル自体から行うことができます。 – pvpkiran

+0

申し訳ありませんが、これは私の質問に答えることはできません。私はMongoTimeoutExceptionを処理したい。 – NAZEHA

0

をインポートすることができ、あなたの必要に応じてソケットタイムアウトと接続タイムアウトを指定することができます。

@Configuration 
public class DatabaseConfiguration { 

    private static final Logger LOGGER = LoggerFactory.getLogger(DatabaseConfiguration.class); 


    @Value("${spring.data.mongodb.uri}") 
    private String mongoUri; 

    @Value("${spring.data.mongodb.database}") 
    private String mongoDbName; 

    @Value("${spring.data.mongodb.host}") 
    private String host; 

    @Value("${spring.data.mongodb.port}") 
    private int port; 

    @Value("${spring.data.mongodb.username}") 
    private String username; 

    @Value("${spring.data.mongodb.password}") 
    private String password; 

    @Bean 
    public MongoTemplate mongoTemplate() { 

     LOGGER.debug(" instantiating MongoDbFactory "); 

     SimpleMongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongoClient(), mongoDbName); 

     MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory); 

     return mongoTemplate; 

    } 

    @Bean 
    public MongoClient mongoClient() { 

     List<ServerAddress> servers = new ArrayList<ServerAddress>(); 
     servers.add(new ServerAddress(host, port)); 

     MongoClientOptions mongoClientOptions = MongoClientOptions.builder() 
       .connectionsPerHost(10) 
       .socketTimeout(2000) 
       .connectTimeout(2000) 
       .build(); 

     if (Utils.isNotEmpty(username) && Utils.isNotEmpty(password)) { 
      List<MongoCredential> creds = new ArrayList<MongoCredential>(); 
      creds.add(MongoCredential.createCredential(username, mongoDbName, password.toCharArray())); 
      return new MongoClient(servers,creds, mongoClientOptions); 
     } else 
      return new MongoClient(servers, mongoClientOptions); 
    } 

    @Bean 
    public MongoClientURI mongoClientURI() { 
     LOGGER.debug(" creating connection with mongodb with uri [{}] ", mongoUri); 
     return new MongoClientURI(mongoUri); 
    } 

} 

Springbootが設計フェイルファーストでは、あなたのapplication.ymlファイルのプロパティ

MongoDBの特定のプロパティ

spring: 
    data: 
    mongodb: 
     database: dbname 
     host: localhost 
     port: 27017 
     username: dbusername 
     password: dbpassword 
関連する問題