2016-05-31 15 views
1

Für Spring XD 1.3.1, Verwendung von Rabbit MQ-Transport, verteilt.Können mehrere Abgriffe für einen einzelnen Spring XD-Stream definiert werden

Auf der Suche nach einer Erklärung, wie Spring XD Taps für Metriken funktionieren. Ich muss wissen, ob ein Stream mehrere Male angezapft werden kann, so dass jede Nachricht durch den primären Stream zu jedem der aktiven definierten Taps gesendet wird.

Das Szenario ist ein Stream mit einer Hase-Quelle, die Verarbeitung vor der Abgabe an eine Spüle, wie Mongo hat. Dieser Stream wird an eine alternative Senke angezapft. Wir möchten auch mehrere Metriken in diesem Stream erstellen, einschließlich eines Aggregat-Zählers und einiger Feldwert-Zähler, die Metriken für Gesamtnachrichten und Nachrichten nach Typ behalten, indem sie in der Quellnachricht nach verschiedenen Feldern suchen (das ist os in JSON).

Die Dokumentation ist unklar, ob jede Berührung eine Kopie der Nachricht erhält.

Beim Testen erhält der erste Antippen alle Nachrichten, aber keiner der Feldwert- oder Aggregatzähler scheint Daten zu erhalten.

Antwort

1

Ja, ein Stream kann mehrere Taps haben. Hier ist ein example. Intern verwendet XD den Nachrichtenbus zu bind to a pub-sub resource (transportabhängig). Wenn Sie zum Beispiel einen Rabbit MQ-Transport verwenden, ist ein Fanout-Austausch created für jeden potenziellen Abgriffspunkt in einem Stream. Das Binden einer Warteschlange an diesen Austausch wird langsam durchgeführt, d. H. Wenn der Tap-Strom erzeugt wird. Sie sollten die entsprechenden Austausch- und Warteschlangenbindungen für jede Berührung in der Rabbit-Verwaltungskonsole sehen.

Ich bin nicht sicher, warum Sie Nachrichten in allen Taps nicht sehen. Denken Sie daran, dass Taps immer bereitgestellt werden sollten (nachdem der Zielstream erstellt wurde, aber bevor der Zielstream bereitgestellt wird), werden alle Daten im Stream vor der Bereitstellung nicht durch den Tap verbraucht.