2017-05-25 41 views
0

我正在開發使用代碼here的自定義初學者應用程序,因爲我想將TcpSSLContextSupport添加到它。我設法做到了這一點,並且它在我的本地SCDF服務器上運行良好,但現在我想通過Google Cloud將它部署到KCDernetes的SCDF上。我爲它創建了一個image,它確實有效,但行爲有點意外。自定義SCDF初學者應用程序寫入「輸出」主題

我創建了一個流,如:stream create stream-name --definition "app-name | log"

首先,它按照慣例創建了一個主題stream-name.app-name,我期待它向我顯示那裏的消息,但它實際寫入「輸出」主題,這很奇怪。我沒有提供任何額外的配置。我用SCDF最新版本以及1.2.0.RELEASE來試用它,結果相同。

回答

0

由於主題stream-name.app-name已創建,因此SCDF會正確設置源應用的出站目的地名稱。請注意,SCDF僅爲應用程序設置屬性spring.cloud.stream.bindings.output.destination。這裏,出站通道假定爲output

我想你的自定義應用程序中的outbound消息通道有不同的綁定目標名稱。由於SCDF未設置此應用的目的地,因此應用默認爲output作爲目的地。

在您的自定義應用程序中檢查您的outbound目標名稱。您需要將屬性spring.cloud.stream.bindings.<customOutboundTargetName>.destination設置爲應用程序的部署屬性。

例如,

```

數據流:>流部署流名--properties「app.source-APP-name.spring.cloud.stream.bindings.customOutboundTargetName.destination = yourTopic,app.sink-APP-name.spring.cloud.stream.bindings.customInboudTargetName.destination = yourTopic」

```

注:customOutboundTargetName和customInboundTargetName被設置爲output和默認通過SCDF。

+0

我知道我可以添加的配置,但我試圖理解爲什麼Spring使用我的自定義應用程序專門做這件事,但不是當我使用'tcp |日誌「選項,特別是當我沒有改變我能想到的任何東西時。而且當你說Spring創建'stream-name.app-name'時正確設置出站頻道時,我也不知道你的意思,因爲儘管如此,它清楚地將出站頻道設置爲'output'。 – ystark

+0

所有開箱即用的應用都會將出站和入站通道名稱命名爲「輸出」和「輸入」。這就是SCDF使用該頻道名稱設置目的地名稱的原因。如果您在自定義應用中使用不同的頻道名稱,則需要按照上述進行配置。 –

+1

此外,Spring Cloud Stream將出站目標名稱(主題)設置爲「輸出」,它發生在這裏:https://github.com/spring-cloud/spring-cloud-stream/blob/master/spring- cloud-stream/src/main/java/org/springframework/cloud/stream/config/BindingServiceProperties.java#L207 –