Frage

Ich will gerne wissen:

Ich habe ein Szenario. Wenn ein Benutzer ein Produkt zum System hinzufügt (Ich entwickle), gibt es ein Zuhörer, die eine Benachrichtigung des Benutzers Kundenbasis anmelde eines neuen Produkts durch den Benutzer hinzugefügt sendet.

habe ich gelesen, diesen Thread und (da ich habe noch nie ich gebrauchte JMS noch ThreadPool vor) frage mich, ob ich JMS oder ThreadPooling sollte.

Ich bin mit Tomcat 5.5 und höher und JBoss 5 und höher (je nach Unternehmen letztes Mittel) auf meine Web-Anwendung bereitstellen.

Wenn ich JMS verwenden, verwende ich Apache ActiveMQ oder JBoss Messaging ? Sie sind beide kompatibel auf beiden Plattformen (Tomcat und JBoss) ausgeführt werden?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Für zwischen Anwendungen in Verbindung steht, ist JMS eine sehr gute Lösung, vor allem für Ereignisse und Benachrichtigungen. JMS ermöglicht solche Meldungen mit gesendet und empfangen werden, was als asynchrones Messaging bekannt, bei dem der Sender und der Empfänger keine Kenntnis voneinander und keine Anforderung zur gleichen Zeit zur Verfügung stehen.

ActiveMQ ist ein sehr weit verbreiteter Nachrichten-Broker, die Client-APIs für Java, C / C ++, C #, Perl, PHP, Python, Ruby und mehr bietet. Dies ermöglicht die Verwendung von JMS mit Anwendungen in Java und anderen Sprachen geschrieben.

Ich habe JMS implementiert Messaging viele, viele Male für eine Vielzahl von Geschäftssituationen Griff Ereignisse und Benachrichtigungen. Die überwiegende Mehrheit dieser Zeiten, ich habe empfohlen und / oder verwendet Frühling JMS egal was Message-Broker verwendet wird. Frühling JMS ist unglaublich einfach zu bedienen, extrem robust und hoch skalierbar. Frühling JMS beseitigt die Komplexität der eigenen Nachrichtenproduzenten zu schaffen und Nachrichten Verbraucher, die Ihnen eine enorme Menge an Zeit sparen.

Um zu sehen, wie einfach es ist, Nachrichten mit Spring JMS zu senden, einen Blog-Post überprüfen ich vor kurzem den Titel schrieb die Feder JmsTemplate JMS-Nachrichten senden . Ich arbeite auch an einer Blog-Post über Nachrichten mit Spring JMS erhalten.

Wenn Sie weitere Fragen haben, lassen Sie es mich wissen.

Bruce

Andere Tipps

hatte ich eine ähnliche Anforderung einmal, und wir benutzten JMS. Dann Hauptproblem war, wie mit Fehlern umgehen, weil SMTP in der Tat nicht transaktionale ist:

  1. ist es in Ordnung, wenn einige E-Mail verloren gehen?
  2. ist es in Ordnung, wenn einige E-Mail zweimal gesendet werden?

Wir entschieden uns, es besser war, zweimal die Nachricht zu senden, und hier ist mehr oder weniger das Design, das wir hatten:

  1. Wir verlassen Container verwaltet Transaktion und wenn aus irgendeinem Grund die E-Mail nicht gesendet werden kann, haben wir beschlossen, die JMS-Transaktion rückgängig zu machen; würde die Nachricht später von JMS erneut zugestellt werden, und ein neuer Versuch, die Nachricht senden getan wurde.

  2. Wenn die JMS-Nachrichtenübermittlung Transaktion fehlgeschlagen, nachdem der E-Mail (beispielsweise mit JMS aufgrund eines Problems) gesendet wurde, würde die Transaktion automatisch zurückgerollt werden und die Nachricht wurde später nachgeliefert. In diesem Fall wurde die E-Mail gesendet zweimal da STMP nicht transaktionale ist.

  3. Auch wenn die E-Mail kann (aus Sicht des Codes), Server die SMTP versendet werden können noch Problem später haben. In diesem Fall haben die JMS geliefert und verbraucht worden, so dass wir keine Möglichkeit hatten zu wissen, welche E-Mail bearbeitet worden war und wie sie manuell erneut senden.

Aber wir waren schon JMS verwenden. Ich würde nicht JMS einführen nur dafür gegeben, dass das Hauptargument ist, dass JMS Transaktions, aber SMTP ist sowieso nicht.

würde ich für etwas geht leichter - möglicherweise mit einem Threadpool - und speichern Sie den Zustand in einer Datenbank zu wissen, welche E-Mail gesendet werden muß, oder wird abgeschickt. Wenn es irgendein Problem gibt, können Sie in der Datenbank suchen und die Ad-hoc-Entscheidungen treffen.

Ich weiß, dass diese Antwort sehr spät auf diese dicsussion ist, aber ich hoffe, es ist immer noch wertvoll sein für Leute, Informationen über die Integration von ActiveMQ und Tomcat suchen.

Ich habe viele Leute fragen mich um Hilfe bei Fragen, die sie gehabt haben, ActiveMQ und Tomcat zu integrieren, damit ich darüber einige Artikel schreiben entschieden. Nicht nur ist dieses Thema bedeckt in ActiveMQ in Aktion (siehe Kapitel 8), aber ich habe auch eine Reihe von Artikeln veröffentlicht auf es betitelte ActiveMQ und Tomcat: Perfect Partner . Hoffentlich werden die Menschen dies hilfreich.

würde ich für eine persistente JMS gehen (ich habe verwendet WLS nur JMS und Websphere MQ können so nicht AQ vs JBoss vergleichen zu können, je nachdem, was bietet eine bessere Garantie für die Lieferung). Außerdem würde ich ernsthaft in Erwägung zieht eine völlig separate Anwendung der E-Mail-Engine machen, je nachdem, wie viel Sie erwarten, dass der Verkehr zu wachsen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top