web-dev-qa-db-ja.com

プロパティを介してレプリカセットを使用するようにspring-data-mongodbを構成する方法

現在、MongoDBのレプリカセットを使用するアプリケーションを作成しています。これは、Spring Bootベースのアプリケーションであり、次のプロパティは1つのサーバーに接続するのに完璧に機能します。

spring.data.mongodb.Host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=demo

これは、私のローカル開発環境にとってはまったく問題ありません。しかし、後でMongoDBレプリカセットに対して実行する必要があるため、少なくとも2つ、より良い3つのレプリカセットシードを提供する必要がありますが、プロパティでこれを行うにはどうすればよいですか?

私はこのページを見ました: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html 、しかし明示的なものはありません上記のレプリカセットのプロパティ。次のようなアドレスのコンマ区切りリストを提供します。

spring.data.mongodb.Host=127.0.0.1,127.0.1.1,127.0.2.1
spring.data.mongodb.uri=mongo://127.0.0.1,mongo://127.0.0.1:27018

(次々と試しました。)

これも機能していません(実際、Springがデフォルトの構成を使用できるようにする例外を生成します)。

また、次のconfig.xmlを使用しようとしましたが、うまくいきませんでした。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:context="http://www.springframework.org/schema/context"
          xmlns:mongo="http://www.springframework.org/schema/data/mongo"
          xsi:schemaLocation=
          "http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/data/mongo
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <mongo:mongo id="replicaSetMongo" replica-set="127.0.0.1:27017,localhost:27018"/>

</beans>

上記の構成はわずかに異なることを知っていますが、現在試みているのは、到達できないレプリカセットノードがないことを示す例外を取得することです。

アイデア、ヒントはありますか?

18
incredibleholg

それに対する明示的なサポートはありません。ただし、uriパラメーターを使用して、適切に構成できるはずです。

実際に更新しました ドキュメント 最近。

17
Stephane Nicoll

同様の問題が発生し、MongoProperties::createMongoClient()コードを掘り下げたところ、spring.data.mongodb.Hostspring.data.mongodb.portspring.data.mongodb.usernameまたはspring.data.mongodb.password

すべての情報をURIに入れた場合(および他のすべてのspring.data.mongodb.*プロパティファイルの値)、接続コードは機能しました。

URIプロパティの設定は次のようになりました。

mongodb://username:mypasswd@hostname1:27017,hostname2:27017,hostname3:27017/dbname

URI値をフォーマットするためのドキュメントは here です。

13
nwolfe

これからapplication.propertiesを変更:

spring.data.mongodb.Host=server1
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=system
spring.data.mongodb.database=database

...これまで:

spring.data.mongodb.uri=mongodb://username:password@server1:port,server2:port/database
3
cepix