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.