Mule: Was ist der Unterschied zwischen einem Multicast-Router und einem statisch-Empfänger-list-Router?
Frage
Ich kann nicht wirklich einen Unterschied zwischen einem Sammels-Router sehen und einem statischen-Empfänger-list-Router. Warum sollte ich einen über den anderen?
Nach Mule-2.x Benutzerhandbuch
Empfängerliste
die Empfängerliste Router kann verwendet werden, das gleiche Ereignis an mehr senden Endpunkte über den gleichen Endpunkt oder Routing-Slip-Verhalten implementieren, wo das nächste Ziel für die Veranstaltung ist von den Ereigniseigenschaften bestimmt oder Nutzlast. Mule bietet eine abstrakte Empfängerliste Implementierung org.mule.routing.outbound.AbstractRecipientList dass ein Thread-sichere Basis für spezialisierte Implementierungen. Mule auch bietet eine Empfängerliste Static dass nimmt einen konfigurierten Liste der Endpunkte aus dem aktuellen Ereignisse oder statisch erklärte auf dem Endpunkt.
<outbound>
<static-recipient-list-router>
<payload-type-filter expectedType="javax.jms.Message"/>
<recipients>
<spring:value="jms://orders.queue"/>
<spring:value="jms://tracking.queue"/>
</recipients>
</static-recipient-list-router> </outbound>
Router Multicast
Das kann Multicast-Router verwendet werden, um Bitte senden Sie das gleiche Ereignis über mehr Endpunkte. Bei Verwendung dieser Router Pflege muss die richtigen konfigurieren genommen werden Transformatoren an den Endpunkten handhaben die Ereignisquelle Typ.
<outbound>
<multicasting-router>
<jms:endpoint queue="test.queue"
transformer-refs="StringToJmsMessage"/>
<http:endpoint host="10.192.111.11"
transformer-refs="StringToHttpClientRequest"/>
<tcp:endpoint host="10.192.111.12"
transformer-refs="StringToByteArray"/>
<payload-type-filter expectedType="java.lang.String"/>
</multicasting-router> </outbound>
Beachten Sie, dass darauf zu achten sollten sicherzustellen, dass die Nachricht weitergeleitet wird wird in ein Format umgewandelt, dass die Endpunkt versteht.
Lösung
Gerade aus dem Maul des Pferdes ( Mule in Aktion von David Dossot, John D'Emic , p. 98..100)
Die statische-Empfänger-Liste Router können Sie gleichzeitig die gleiche Nachricht an mehrere Endpunkte senden. Sie werden in der Regel eine statische Empfängerliste verwenden, wenn jeder Endpunkt den gleichen Transport verwendet. Dies ist häufig der Fall bei VM und JMS-Endpunkten.
Verwenden statische Empfängerlisten, wenn die gleiche Nachricht an Endpunkten mit identischen Transporten Senden
Der Sammels Router ist ähnlich die statische Empfängerliste, dass sie gleichzeitig die gleiche Nachricht über eine Reihe von Outbound-Endpunkten senden. Der Unterschied besteht darin, dass der Multicast-Router verwendet wird, wenn die Endpunktliste verschiedene Arten von Transporten enthält.
Mit dem Sammels Router, wenn die gleiche Nachricht an Endpunkten Senden verschiedene Transporte mit
Andere Tipps
Das ist, wie ich dies verstehen:
Die statisch-Empfänger-Liste der Router die Nutzlast an jeden Empfänger in der Reihenfolge senden, dass sie aufgeführt sind. Dies gibt Ihnen die Möglichkeit, die Nutzlast, bevor Sie mit dem nächsten Endpunkt zu ändern. Dies gibt Ihnen auch die Möglichkeit, Stop-Verarbeitung im Fall eines Fehlers.
Der Multicast-Router sendet die gleiche Nutzlast an alle Endpunkte zur gleichen Zeit. Sie werden die Nutzlast nicht für jeden Endpunkt ändern können. Sie werden andere Endpunkte nicht davon abhalten können, zu verarbeiten, wenn einer der Endpunkte nicht.