2016-05-23 18 views
0

Ich muss einen Server schreiben, der die Nachrichtenwarteschlange (Consumer) überwacht und die gelesenen Daten an eine Datenbank sendet, sowie einen anderen Server, der Informationen (Producer) an diese Warteschlange sendet.JMS und ActiveMQ

Ich folge this official spring reference auf Spring + JMS.

Ich verstehe nicht, die folgenden:

  1. Was ist die Beziehung zwischen JMS und ActiveMQ?
  2. Welcher von ihnen implementiert tatsächlich die Nachrichtenwarteschlange?
  3. am Beispiel sehe ich:

    FileSystemUtils.deleteRecursively(new File("activemq-data")); 
    

    als Mittel, um die Warteschlange zu löschen.

    Werden die Daten der Warteschlange in einer Datei verwaltet?

  4. Wenn die Warteschlange des Dateisystems beibehalten wird, wie kann ich meine JMS-Server mehr als einen Computer (Server)

Dank Maßstab!

Antwort

3

JMS ist nur eine API-Spezifikation, keine Implementierung. Sie benötigen eine Software, die die JMS-API implementiert, wenn Sie etwas mit Nachrichtenwarteschlangen machen möchten.

ActiveMQ ist ein Nachrichtenbroker, der die JMS-API implementiert. Neben ActiveMQ gibt es viele weitere Produkte, die die JMS-API implementieren.

Die Idee ist, dass Ihre Software die JMS API verwendet, ohne sie spezifisch an eine bestimmte Implementierung zu binden, sodass Sie ActiveMQ im Prinzip durch ein anderes Produkt ersetzen können, das JMS implementiert, ohne etwas in Ihrem Programm zu ändern. Dieses Prinzip wird in der Softwareentwicklung häufig verwendet, und in der Java EE-Welt gibt es viele andere APIs und Implementierungen, die auf diese Weise funktionieren (z. B. JDBC- und JDBC-Treiber, JPA und Hibernate, die Servlet-API und Tomcat).

Also ActiveMQ ist, was tatsächlich die Nachrichtenwarteschlange implementiert.

Werden die Daten der Warteschlange in einer Datei verwaltet?

Offenbar ist das, was ActiveMQ standardmäßig tut.

Wenn die Warteschlange des Dateisystems beibehalten wird, wie kann ich meine JMS-Server mehr als einen Computer (Server)

Zunächst einmal skalieren, die Tatsache, dass ActiveMQ speichert Daten auf die Datei System bedeutet nicht, dass es nicht auf mehr als einen Server skalieren kann. Tatsächlich speichert letztendlich jede Software (auch Datenbanken) ihre Daten im Dateisystem (wenn die Daten persistent sein müssen). Lesen Sie die Dokumentation auf der ActiveMQ website, um zu lernen, wie man es skaliert (es unterstützt clustering).

1
What is the relationship between JMS and ActiveMQ? 

Das Java Message Service (JMS) API ist ein Java Message Oriented Middleware (MOM) API für Nachrichten zwischen zwei oder mehreren Clients zu senden. JMS ist ein Teil der Java-Plattform, Enterprise Edition und wird durch eine Spezifikation entwickelt unter dem Java Community Process als JSR 914. Und ActiveMQ ist ein Dritter Messaging-Dienstanbieter definiert durch JSR folgende 914.

Welche von ihnen implementiert tatsächlich die Nachrichtenwarteschlange?

ActiveMQ stellt die Implementierungen der Nachrichtenwarteschlange bereit.

Für Spring und ActiveMQ-Integration beziehen Sie sich diese post.

+0

Also, was genau ist die Verbindung zwischen den beiden? Kann ich Spring und ActiveMQ ohne JMS verwenden oder umgekehrt? Ist das obige Beispiel ActiveMQ eingebettet (ich habe ActiveMQ nicht wirklich in ein Verzeichnis heruntergeladen und ausgeführt, um es zum Laufen zu bringen)? – yuz

+0

JMS bietet eine gemeinsame Schnittstelle zu Standard-Messaging-Protokollen und auch zu speziellen Messaging-Diensten zur Unterstützung von Java-Programmen. Im Wesentlichen implementiert ActiveMQ die JMS-API zur Bereitstellung von Messaging-Diensten. Um Ihre Arbeit zu erledigen, benötigen Sie ActiveMQ- (installiert) und Spring-Abhängigkeiten, um sie zusammenzufügen. Das Beispiel scheint Standalone ActiveMQ zu verwenden. – Apollo

Verwandte Themen