2009-09-02 6 views
27

Ich bin dabei, ein ESB in ein bestehendes Java/Maven-Produkt zu integrieren. Insbesondere betrachte ich ServiceMix und Mule. Das Produkt verbindet sich mit verschiedenen Diensten, darunter E-Mail, Quartz, REST-konforme Webservices über HTTP, SMS und IM. Ich habe nur kurz auf die Dokumentation geschaut und die beiden Optionen scheinen ziemlich schwer und ziemlich komplex zu sein. Es scheint ein Lehrbuchbeispiel zu sein, wann man einen ESB benutzt, aber ich möchte nicht viel Zeit damit verbringen, nur das eine oder andere System zu lernen.Ist die Integration eines ESB (ServiceMix/Mule) die Lernkurve wert?

Wie ich schon sagte, ich habe bereits eine Web-App von Maven gebaut und hatte gehofft, eines der Systeme zu integrieren, wäre ziemlich einfach, auch nur für etwas so einfaches wie das Senden einer E-Mail, aber es sieht so aus, als würden beide hinzukommen die Hälfte der Welt in Bezug auf Gläser und wäre schwer in das bestehende Produkt zu integrieren.

Lohnt es sich, eine dieser Optionen zu wählen? Gibt es eine einfache Möglichkeit, sie in eine bestehende App zu integrieren, ohne sie komplett neu zu strukturieren? Gibt es andere, leichtere Optionen? Gibt es einige Aspekte, die ich in Erwägung ziehen sollte, die ihre Verwendung lohnen würden?

+2

Was kostet ein ESB Sie neben mehr Komplexität? Warum denkst du, dass du es brauchst? Wie viele Dienste gibt es "mehrere", und wie viele müssen Sie für die Erstellung eines ESB benötigen? – duffymo

+1

Ich erwarte, dass wir bis zum Produktionsstart im niedrigen zweistelligen Bereich externe Services haben. Und sie werden vielfältig sein, aber viele von ihnen werden ähnlichen Zwecken dienen. B. per E-Mail, IM oder SMS, wo der Unterschied nur das Medium ist. – Tim

+4

Eine Folge mehr als ein Jahr später. Hat Mule für Camel ausgewechselt. Wir waren sehr glücklich mit Camel. Erstaunlich lebendige Community, leicht und es gibt jetzt ein Buch, um die im Allgemeinen gute Dokumentation zu ergänzen. Ich würde sagen, fangen Sie mit Camel an, es sei denn, es gibt einen offensichtlichen Grund, warum Sie einen vollwertigen ESB brauchen würden. – Tim

Antwort

13

Mule ist ziemlich einfach in Bezug auf Plugging-Dienste zusammen mit XML zu verwenden und sie haben viele Videobeispiele, die ich wirklich hilfreich fand.

ESBs sollen Zukunft sein, und wie Sie sagen - Ihr scheint wie ein Lehrbuchbeispiel zu sein, wo man es benutzt.

Ich werde versuchen, alle Ihre Fragen zu beantworten:

Lohnt es sich, in eine dieser Optionen zu ziehen versuchen? Ich denke, das ist eine Frage, die Sie sich stellen müssen - was wollen Sie erreichen? Wenn Sie versuchen, es einfacher zu implementieren, dauert es wahrscheinlich die gleiche Zeit über reinen Code oder ESB, was mit allem Setup enthalten ist. Wenn Sie darüber nachdenken, es als eine Lernübung zu tun, könnte es sich lohnen.

Gibt es eine einfache Möglichkeit, sie in eine bestehende App zu integrieren, ohne sie komplett neu zu strukturieren? Kurze Antwort Nr. Sie benötigen ein Reengineering, um die meisten Bibliotheken/Frameworks von Drittanbietern zu integrieren.

Gibt es andere, leichtere Optionen? Mule ist wirklich ziemlich einfach. Möglicherweise können Sie einen MQ für HTTP, SMS und IM verwenden. Möglicherweise ActiveMQ oder RabbitMQ.

Gibt es einige Aspekte, die ich in Betracht ziehen sollte, die ihren Einsatz lohnen würden? Ja, ESBs sind für Unternehmen konzipiert, in denen häufig neue Dienste hinzugefügt werden und sich die Konfiguration wahrscheinlich ändert. Alles in XML zu haben, macht diese Änderung ein wenig einfacher. Wenn Sie also nur eine einmalige Software entwickeln, ist das vielleicht nicht der richtige Weg. Aber wenn Sie später weitere hinzufügen und ständig verschiedene Dienste verbinden, ist dies möglicherweise die beste Route.

+1

Ich konnte Mule ohne viel Ärger mit dem Projekt arbeiten lassen, obwohl es fast jedes denkbare Glas in sich aufzunehmen scheint. Als ich endlich die richtigen Beschwörungen fand, war der Einfluss auf meinen Code ziemlich minimal, was gut ist, aber die Dokumentation war nicht großartig, um Mule in eine bestehende Webapp zu integrieren. Ich habe immer noch kein Gespür dafür, ob es sich lohnt, aber ich habe jetzt ein Mittel, das zu bestimmen. Vielen Dank. – Tim

4

Ross Mason, der Gründer des Mule-Projekts schrieb einen wirklich guten Artikel zu diesem Thema, To ESB or Not to ESB. Ich empfehle, einen Blick darauf zu werfen. Vielleicht möchten Sie auch Mule iBeans auschecken, die ein viel einfacheres Modell bietet, wenn Sie dies als Web-App erstellen und nur eine leichte Integration durchführen möchten und nicht an einer Vermittlung interessiert sind.

+0

https://blogs.mulesoft.com/dev/mule-dev/to-esb-or-not-to-esb/ (neuer Link) –

12

Vielleicht möchten Sie auch Apache Camel Framework betrachten, das wirklich mächtig ist für all die Integrationsanforderungen, die Sie erwähnt haben, ohne die Strafen eines ausgewachsenen ESB.

+2

Lustig sollten Sie das erwähnen, da ich Camel jetzt als mögliche Option auswerte anstelle von Mule, da es leichter zu sein scheint. Ich habe noch keine Entscheidungen getroffen, aber es scheint, dass es mir geben könnte, was ich brauche, ohne so viel Overhead. – Tim

1

Ich rate dir, deine wertvolle Zeit nicht mit MULE zu verschwenden. Meine bisherigen Erfahrungen sind nicht gut. Ich würde es nicht für jedes kritische System verwenden. Es ist weit entfernt davon, ein ausgereiftes Produkt zu sein. Abgesehen davon versprechen RESTful Services definitiv viel Einfachheit und echte Anwendungsfälle.

1

Ich würde sagen, dass es die Investition wert ist, wenn Sie mehr als zwei Anwendungen oder Datenbanken haben, die miteinander kommunizieren müssen und sie mehr als ein Kommunikationsprotokoll verwenden. Oder, wenn Sie erwarten, dass diese Situation in der Zukunft wahr ist. Klingt nach Ihren Anforderungen.

Eine andere Situation, die die Verwendung eines ESB oder zumindest eines Nachrichtenbusses nahelegen würde, wäre, wo Sie eine oder mehrere der Anwendungen erwarten oder benötigen, um sich unabhängig von den anderen zu entwickeln. Zum Beispiel ist man unter aktiver Entwicklung und die anderen sind nicht aktiv. Ein ESB kann die stabilen Systeme von Änderungen in den aktiv entwickelten Systemen isolieren, so dass nicht immer alles aktualisiert werden muss.

Die wahre Stärke eines ESB besteht darin, dass Anwendungen alle Entscheidungen über die Kommunikation und die Kommunikation mit dem ESB delegieren können und diese Komponente die volle Verantwortung für diese Aspekte übernehmen kann. Alle anderen Komponenten werden voneinander isoliert und müssen sich nicht umeinander kümmern, wodurch die Probleme der Kombinationen von Abhängigkeiten stark reduziert werden. Im Hinblick auf die Lernkurve habe ich festgestellt, dass Mule ESB relativ einfach zu erlernen ist und sicherlich eine viel niedrigere Lernkurve wäre, um alle erforderlichen APIs zu lernen, um die verschiedenen Dienste, die Sie versuchen, zu sprechen verbinden mit.