MongoDBConnectionService
Dieser Service wird einerseits intern genutzt, zudem ist er notwendig, wenn Sie mit dem Eingangsagenten des Typs MongoDB arbeiten möchten.
XML-Konfiguration
Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!). Die Default-Konfigurationsdatei für diesen Service ist ./etc/mongodb.xml.
Ein neuer MongoDB-Datenbank-Alias kann hinzugefügt werden mit einem XML-Fragment folgender Art.
Minimal-Konfiguration
<?
xml
version
=
"1.0"
encoding
=
"ISO-8859-1"
?>
<!DOCTYPE Configure PUBLIC
"-//Lobster//DTD Configure 1.0//EN"
"
http://www.lobster.de/dtd/configure_1_1.dtd
">
<
Configure
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBConnectionService"
>
<
Set
name
=
"verbose"
>true</
Set
>
<!-- If the MongoDB should be used for _data logging, the alias name MUST be '_data' -->
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>mydatabase</
Set
>
<
Call
name
=
"addDatabaseEntry"
>
<
Arg
type
=
"String"
>mongodb:
plain://192.168.111.103:27017
</
Arg
>
<
Arg
type
=
"String"
/>
<
Arg
type
=
"String"
/>
</
Call
>
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>mydatabase</
Set
>
</
New
>
</
Arg
>
</
Call
>
</
Configure
>
Die einzelnen Parameter haben dabei folgende Bedeutung.
alias |
Der zu verwendende Alias. |
catalogName |
Der Name des Katalogs (Schemas) innerhalb der MongoDB-Datenbank (auch Database genannt). Wird dieser nicht angegeben, wird der Alias verwendet. |
minSize |
Die Anfangsgröße des Verbindungspools beim Starten des Services. |
Der Connection-String (hier mongodb:plain://192.168.111.103:27017) |
Wichtiger Hinweis: Aktuell wird nur die Authentifizierungsmethode "plain" unterstützt. Das bedeutet, dass bei der Anmeldung an der MongoDB das Passwort im Klartext übertragen wird. Zudem müssen Sie auf Ihrer MongoDB entsprechende Einstellungen vornehmen. Verwenden Sie dazu bitte die Dokumentation des Herstellers. |
Konfiguration mit Benutzer und Passwort
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>mydatabase</
Set
>
<
Call
name
=
"addDatabaseEntry"
>
<
Arg
type
=
"String"
>mongodb:
plain://localhost:27017
</
Arg
>
<
Arg
type
=
"String"
>username:mydatabase</
Arg
>
<
Arg
type
=
"String"
>password</
Arg
>
</
Call
>
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>mydatabase</
Set
>
</
New
>
</
Arg
>
</
Call
>
Sie müssen den Database-Namen beim Benutzer angeben.
Konfiguration für MongoDB-Replica-Set (Cluster)
Ein Replica Set ist ein Cluster mit n MongoDBs (meist drei, mit einer Primary-MongoDB und zwei Secondary-MongoDBs). Fällt die Primary-MongoDB weg, übernimmt eine der Secondary-MongoDBs. Dazu müssen Sie nichts machen, das erfolgt automatisch, aber alle Teilnehmer müssen bekannt sein.
<
Call
name
=
"initPool"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.nosql.mongo.MongoDBSettings"
>
<
Set
name
=
"alias"
>mongodb_cluster</
Set
>
<
Call
name
=
"setDatabases"
>
<
Arg
>
<
Array
type
=
"java.lang.String"
>
<!-- Replica Member 1 with Replica Set Name -->
<
Item
>mongodb:
plain://localhost1:27017/?replicaSet=rs-ips
</
Item
>
<!-- Replica Member 2 -->
<
Item
>mongodb:
plain://localhost2:27017
</
Item
>
<!-- Replica Member 3 -->
<
Item
>mongodb:
plain://localhost3:27017
</
Item
>
</
Array
>
</
Arg
>
</
Call
>
<
Call
name
=
"setUsers"
>
<
Arg
>
<
Array
type
=
"java.lang.String"
>
<!-- User for Replica Member 1 -->
<
Item
>username:mydatabase</
Item
>
<!-- User für Replica Member 2 -->
<
Item
>username:mydatabase</
Item
>
<!-- User für Replica Member 3 -->
<
Item
>username:mydatabase</
Item
>
</
Array
>
</
Arg
>
</
Call
>
<
Call
name
=
"setPasswords"
>
<
Arg
>
<
Array
type
=
"java.lang.String"
>
<!-- Password for Replica Member 1 -->
<
Item
>password</
Item
>
<!-- Password for Replica Member 2 -->
<
Item
>password</
Item
>
<!-- Password for Replica Member 3 -->
<
Item
>password</
Item
>
</
Array
>
</
Arg
>
</
Call
>
<
Set
name
=
"minSize"
>0</
Set
>
<
Set
name
=
"catalogName"
>mydatabase</
Set
>
</
New
>
</
Arg
>
</
Call
>
Wie Sie sehen, muss der erste Connection-String den Namen des Replica-Sets enthalten (hier rs-ips).
Meist werden auf den verschiedenen MongoDBs identische Benutzernamen, Passwörter verwendet und das empfehlen wir auch, aber man könnte auch unterschiedliche nehmen. Die Database-Namen müssen aber immer gleich sein und bei jedem Benutzer angeben werden.
Wenn Sie dann z. B. den Eingangsagenten des Typs MongoDB verwenden, geben Sie schlicht den Alias an (hier mongodb_cluster), alles andere passiert automatisch im Hintergrund.