2017-01-12 3 views
0

Привет всем Я новичок в проекте Spring Maven, и я использую MongoDB. Я хочу использовать два tomcats/MongoDB, оба из этих IP-адресов различны. когда первый DB вниз, мне нужно соединить с второй как можно Я использую следующий кодКак я могу обрабатывать несколько серверов MongoDB

public boolean mongoRunningAt(String uri) { 
    try { 
     Mongo mongo = new Mongo(new MongoURI(uri)); 
     try { 
      Socket socket = mongo.getMongoOptions().socketFactory.createSocket(); 
      socket.connect(mongo.getAddress().getSocketAddress()); 
      socket.close(); 
     } catch (IOException ex) { 
      mongo = new Mongo(new MongoURI(uri_second)); 
     Socket socket = mongo.getMongoOptions().socketFactory.createSocket(); 
      socket.connect(mongo.getAddress().getSocketAddress()); 
      socket.close(); 
      //return false; 
     } 
     mongo.close(); 
     return true; 
    } catch (UnknownHostException e) { 
     return false; 
    } 
} 

Используя этот код я попытался с первой успешно подключен, теперь купирован первый DB Теперь перезапуске сервера он подключен со вторым db.

Но если я не перезапустить сервер он всегда указывает на первых только ... как я должен работать над этим

Заранее спасибо

ответ

0

Вы развернуты 2 серверов, они в replica set. Если нет, вы можете перейти по ссылке. Когда они уже находятся в наборе реплик, вы можете использовать connectionstring, содержащий 2 сервера.

Как это:

mongodb://db1.example.net,db2.example.net:2500/?replicaSet=test 
+0

Привет Hoefmeistert, Вы говорите мне попробовать с таким же кодом вместо UIR "MongoDB: 127.0.0.1,128.0.0.2: 27017", как это? – Skyvin

+0

При подключении к набору реплик вам не нужно проверять, находятся ли серверы в сети. Просто подключитесь к набору реплик. Ваш сервер должен быть в наборе реплик. Вам необходимо следить за настройкой реплики (статус серверов). Это зависит от того, каким образом вы размещаете серверы. – HoefMeistert