2010-04-07 6 views
7

Ich bin in der ESB Sache mit .net wie NServiceBus etc, kann jemand hervorheben, welche Art von realen Welt Geschäftsprobleme gelöst werden kann (vergessen Sie den technischen Rand)? Und wird dies verwendet, um verschiedene Systeme zu integrieren?Enterprise Service Bus reale Welt Verwendung oder Beispiele

+2

Zählen Sie Dinge wie Skalierbarkeit als ein "real world business problem"? Wie wäre es mit Wartbarkeit - als würde verhindert, dass das System im Laufe der Zeit zu einem großen Schlammball wird? –

Antwort

3

Ein sehr beliebter Grund, es zu verwenden, wäre, den Verlegerteilnehmer Muster zu verwenden.

Ein Beispiel, eine Befehlsnachricht wird an eine Anwendungsschicht gesendet, um einige Geschäftslogik zu verarbeiten. Sobald die Nachricht fertig ist, wird sie mit allen aktualisierten Daten veröffentlicht, auf die mehrere Dienste warten, wie zum Beispiel ein Cluster von Caches.

Es gibt Vorteile der Versionierung nebeneinander. Neuere Befehle können unterschiedliche Namen haben. Es kann auch helfen, wenn Sie daran interessiert sind, Command Query Separation zu verwenden.

Eine andere würde Cross-Cut-Bedenken implementieren, die auf bestimmte Nachrichten hören.

Alles in allem ist es ein sehr tiefes Thema. Ich würde jedoch fragen, welche Probleme Sie zuerst haben? Als alles bringt es eigene Herausforderungen mit sich und kommt sicherlich nicht umsonst (Aufwandsmäßig meine ich nicht zu kosten).

+0

Ich suche nach Use Cases für dieses Ding, ich kann zurück gehen und sagen, hey, wenn wir ein esb haben, können wir so und so Sachen wie andere Leute zum Beispiel lösen ... – abmv

+0

@abmv diese können Sie aktivieren, um zu umgehen einige Ihrer Probleme in der realen Welt wie Skalierung horizontal, Echtzeit-Versionierung, Trennung von Diensten, neue Auditing-Funktionen. Es ist kein goldener Hammer, aber in bestimmten Situationen sehr nützlich und die Details dieser Situation müssten bekannt sein. Ich glaube nicht, dass Sie sagen können, dass Sie es absolut verwenden, es sei denn, Sie heben Vorteile und Kosten innerhalb Ihrer Beschränkungen auf. – dove

3

Wir verwenden RabbitMQ für Message Queuing. Es ist eine schnelle und robuste Hersteller-Consumer-Lösung. Wir verwenden sowohl transiente als auch persistente Zustellungsarten. Transiente Nachrichten werden für Soft-Realtime-Berechnungsupdates verwendet. Persistent für Entity-Status-Updates - hauptsächlich um Datenbank-Updates an andere Services zu übertragen.

+0

Sie meinen, dass Sie Ihre Datenbankaktualisierungen, die von Ihren Apps ausgeführt werden, an andere Apps weitergeben, indem Sie rabbitMQ verwenden. Haben die anderen Dienste diese Daten für uns usw. gespeichert? – abmv

+0

Ja, wir propagieren DB-Updates über die persistente Warteschlange. – Kimi