2016-09-15 4 views
1

У меня есть загрузочный сервер весны, и я хочу подключить его к набору реплик mongoDB. (3 сервера в наборе)Как установить набор реплик в весенний ботинок?

1.in application.properties Я настроил: spring.data.mongodb.uri = MongoDB: // пользователь: [email protected]: 27017/администратор но если я пытаюсь для записи на сервер, который не является основным, я получаю ошибку. так как я могу настроить его, чтобы мое весеннее загрузочное приложение всегда знало, кто является первичным, и записывается в основной?

Я знаю, что есть возможность написать: spring.data.mongodb.uri = MongoDB: // пользователь: [email protected]: 27017,172.1.1.2: 27017,172.1.1.3: 27017/админ

, но он бросает мне исключение:

2016-09-11 14: 14: 54,811 INFO 3128 --- [-31-61-35: 27017] org.mongodb.driver.cluster: исключение в мониторе нить при подключении к серверу ip-172-1-1-2: 27017

com.mongodb.MongoSocketOpenException: гнездо открытия исключения at com.mongodb.connection.SocketStream.open (SocketS tream.java:63) ~ [mongodb-driver-core-3.2.2.jar: na] at com.mongodb.connection.InternalStreamConnection.open (InternalStreamConnection.java:114) ~ [mongodb-driver-core-3.2. 2.jar: na] at com.mongodb.connection.DefaultServerMonitor $ ServerMonitorRunnable.run (DefaultServerMonitor.java:128) ~ [mongodb-driver-core-3.2.2.jar: na] на java.lang.Thread. run (Thread.java:745) [na: 1.8.0_101] Вызвано: java.net.SocketTimeoutException: соединить тайм-аут на java.net.DualStackPlainSocketImpl.waitForConnect (собственный метод) ~ [na: 1.8.0_101] на java.net.DualStackPlainSocketImpl.socketConnect (DualStackPlainSocketImpl.java:85) ~ [na: 1.8.0_101] на java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:350) ~ [na: 1.8.0_101] на java .net.AbstractP lainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:206) ~ [na: 1.8.0_101] на java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:188) ~ [na: 1.8.0_101] на java.net.PlainSocketImpl. connect (PlainSocketImpl.java:172) ~ [na: 1.8.0_101] на java.net.SocksSocketImpl.connect (SocksSocketImpl.java:392) ~ [na: 1.8.0_101] на java.net.Socket.connect (Socket.java:589) ~ [na: 1.8.0_101] at com.mongodb.connection.SocketStreamHelper.initialize (SocketStreamHelper.java:50) ~ [mongodb-driver-core-3.2.2.jar: na] at com.mongb.connection.SocketStream.open (SocketStream.java:58) ~ [mongodb-driver-core-3.2.2.jar: na] ... 3 общих кадра опущены

  1. Я всегда подключаюсь к админ-БД. но мне нужен доступ к другому db, потому что моя коллекция есть. как я могу настроить, что пользователь подключится ко всем db? , потому что этот пользователь будет работать с разными dbs и разными коллекциями?

спасибо

ответ

0

Этот другой ответ (How to configure spring-data-mongodb to use a replica set via properties), один из не общепринятого ответа от @nwolfe говорит, что это:

... обнаружило, что код игнорирует Ури если имеются значения , сконфигурированные для spring.data.mongodb.host, spring.data.mongodb.port, spring.data.mongodb.username или spring.data.mongodb.password.Если я поместил всю эту информацию в uri (и удалил все остальные значения spring.data.mongodb. * Из файла свойств ), код соединения сработал.

От spring doc:

Вы можете установить свойство spring.data.mongodb.uri изменить URL и настроить дополнительные параметры, такие как набор реплик:

spring.data.mongodb .uri = mongodb: // пользователь: [email protected]: 12345, mongo2.example.com: 23456/тест

Смежные вопросы