2017-05-25 2 views
0

Ich entwickle eine benutzerdefinierte Starter-App mit dem Code here, weil ich TcpSSLContextSupport hinzufügen wollte. Ich habe es geschafft, und es funktionierte auf meinem lokalen SCDF-Server, aber jetzt möchte ich es auf SCDF für Kubernetes über Google Cloud bereitstellen. Ich habe eine image dafür erstellt und es funktioniert, aber das Verhalten ist ein wenig unerwartet.Benutzerdefinierte SCDF Starter App schreibt in "Ausgabe" Thema

Ich erstellte einen Stream wie: stream create stream-name --definition "app-name | log".

Zunächst einmal, es erstellt ein Thema nach Konvention stream-name.app-name, und ich habe erwartet, dass es mir die Nachrichten dort zeigt, aber es schreibt tatsächlich in das Thema "Ausgabe", das ist seltsam. Ich habe keine zusätzliche Konfiguration zur Verfügung gestellt. Ich habe es mit SCDF neueste Version sowie 1.2.0.RELEASE mit den gleichen Ergebnissen versucht.

Antwort

0

Da das Thema stream-name.app-name erstellt wurde, legt SCDF den Zielnamen für die Ausgangsanwendung korrekt fest. Beachten Sie, dass SCDF nur die Eigenschaft spring.cloud.stream.bindings.output.destination für die Apps einstellt. Hier wird der abgehende Kanal als output angenommen.

Ich vermute, Sie haben einen anderen Bindungszielnamen für den Nachrichtenkanal outbound in Ihrer benutzerdefinierten Anwendung. Da SCDF das Ziel für diese App nicht festlegt, verwendet die App standardmäßig output als Ziel.

Überprüfen Sie Ihren Zielnamen outbound in Ihrer benutzerdefinierten App. Sie müssen die Eigenschaft spring.cloud.stream.bindings.<customOutboundTargetName>.destination als Bereitstellungseigenschaft für die App festlegen.

Zum Beispiel

`` `

Datenfluß:> Strom deploy stream-name --properties„app.source-app-name.spring.cloud.stream.bindings.customOutboundTargetName.destination = yourTopic, app.sink-app-name.spring.cloud.stream.bindings.customInboudTargetName.destination = yourTopic“

` ``

Hinweis: customOutboundTargetName und customInboundTargetName eingestellt, wie output und input standardmäßig über SCDF.

+0

Ich weiß über die Konfiguration, die ich hinzufügen kann, aber ich versuche zu verstehen, warum Spring dies speziell mit meiner benutzerdefinierten App tut, aber nicht, wenn ich die 'tcp | log 'Option, besonders wenn ich nichts geändert habe, was mir einfällt. Und ich weiß auch nicht, was du meinst, wenn du sagst, dass Spring den Outbound-Channel korrekt setzt, wenn 'stream-name.app-name' erstellt wird, weil er den Outbound-Kanal eindeutig auf' output' setzt, obwohl das? – ystark

+0

Alle Out-of-the-Box-Apps enthalten die Namen der ausgehenden und eingehenden Kanäle als "Ausgabe" und "Eingabe". Aus diesem Grund legt SCDF den Zielnamen unter Verwendung dieses Kanalnamens fest. Wenn Sie in Ihrer benutzerdefinierten App einen anderen Kanalnamen verwenden, müssen Sie die Konfiguration wie oben vornehmen. –

+1

Es ist auch Spring Cloud Stream, der den Namen des ausgehenden Ziels (Thema) als "Ausgabe" festlegt und es passiert hier: https://github.com/spring-cloud/spring-cloud-stream/blob/master/spring- cloud-stream/src/main/java/org/springframework/wolke/stream/config/BindingServiceProperties.java # L207 –

Verwandte Themen