Wir führen derzeit eine Java-Integrationsanwendung auf einer Linux-Box aus. Zunächst ein Überblick über die Anwendung.
Die Java-Anwendung ist eine eigenständige Anwendung (die nicht auf einem Java EE-Anwendungsserver wie OracleAS, WebLogic, JBOSS usw. bereitgestellt wird). Mit Stand Alone meine ich, dass es sich NICHT um eine DESKTOP-Anwendung handelt. Sie wird jedoch von der Befehlszeile aus einer Hauptklasse ausgeführt. Der Benutzer interagiert überhaupt nicht direkt mit dieser Anwendung. Die Nachrichten werden über eine API in die Warteschlange eingegeben, die dann von meiner Anwendung ausgelesen wird, die rund um die Uhr läuft. Ich würde dies nicht als Desktop-Anwendung bezeichnen, da der Benutzer keine direkte Interaktion mit ihr hat (ich bin mir nicht sicher, ob dies die korrekte Argumentation ist, um sie als solche zu bezeichnen).
Es verwendet Spring und stellt eine Verbindung zu WebSphere MQ und Oracle Database her. Wir verwenden einen Spring Listener (Spring Message Driven POJOs), der auf eine Warteschlange auf WebSphere MQ hört. Sobald sich eine Nachricht in der Warteschlange befindet, liest die Anwendung die Nachricht aus dem MQ und speichert sie in der Datenbank ab (einfügen/aktualisieren).
Nun stellt sich die Frage:
- Wie können wir diese Anwendung horizontal skalieren? Ich meine, einfach mehr Boxen aufstellen und mehrere Instanzen der gleichen Anwendung laufen lassen, ist das ein praktikabler Ansatz?
- Sollten wir einen Wechsel von Spring MDPs zu EJB MDBs in Betracht ziehen? Dabei sollten wir sie auf dem Anwendungsserver bereitstellen. Gibt es einen zusätzlichen Nutzen, wenn wir das tun?
- Es gibt einen Antrag, die Anwendung hochverfügbar (HA) zu machen? Welche Methoden oder Strategien werden vorgeschlagen, um eine eigenständige Anwendung hochverfügbar zu machen?