I'm developing a custom starter app using the code here, because I wanted to add TcpSSLContextSupport
to it. I've managed to do that, and it worked fine on my local SCDF server, but now I want to deploy it on SCDF for Kubernetes over Google Cloud. I've created an image for it and it does work, but the behavior is a little unexpected.
I created a stream like: stream create stream-name --definition "app-name | log"
.
First off, it created a topic as per convention stream-name.app-name
, and I was expecting it to show me the messages there, but it actually writes into the "output" topic, which is strange. I haven't provided any additional configuration. I tried it with SCDF latest version as well as 1.2.0.RELEASE with the same results.
Since the topic stream-name.app-name
is created, the SCDF correctly sets the outbound destination name for your source app. Note that SCDF sets only the property spring.cloud.stream.bindings.output.destination
for the apps. Here, the outbound channel is assumed to be output
.
I guess you have a different binding target name for the outbound
message channel in your custom application. Since SCDF doesn't set the destination for this app, the app defaults to output
as the destination.
Check your outbound
target name in your custom app. You need to set the property spring.cloud.stream.bindings.<customOutboundTargetName>.destination
as a deployment property for the app.
For instance,
dataflow:>stream 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"
Note: customOutboundTargetName and customInboundTargetName are set as output
and input
by default via SCDF.