2017-05-31 116 views
0

我使用spring-cloud-data-flow-server-yarn並在我的yarn-cluster中成功部署了spring-cloud-stream應用。使用spring-cloud-dataflow時spring-cloud-stream應用中的屬性不起作用

現在我面臨一個問題:

當我部署我的應用程序考察的spring.cloud.stream.bindings.output.destination屬性值將覆蓋到streamName.groupName,我認爲這是該頻道名稱的默認值。

如何讓scs-app中的頻道名稱的屬性生效?我的意思是不使用部署屬性,而只是讓scs-app內的屬性生效。

回答

0

根據OOTB應用程序,Spring Cloud Data Flow假定入站/出站目標(例如:消息通道)名稱爲input/output。如果您的目標頻道名稱不是input/output,那麼您需要通過流定義/部署屬性顯式設置目標名稱。

這裏有一個Github issue,你可以從那裏跟蹤它。

編輯:

一些更基本點要注意:

新加坡民防部隊需要知道流的上下文中的組名稱(這裏流名稱)正在部署。而作爲獨立的Spring Cloud Stream應用程序,它在應用程序級別的上下文中有自己的設置用戶組名稱等的方式。

SCDF構建爲一個編排模型,使用Spring Cloud Stream/Task應用程序運行Streams/Tasks。綁定目標屬性是SCDF爲覆蓋此Stream模型而需要覆蓋的屬性之一。但是,您仍然可以通過部署屬性覆蓋此目標設置

+0

感謝您的快速回復Ilayaperumal。 讓我舉個例子:我有一個名爲my-source-app的自定義源應用程序,在這個應用程序中,我有一個屬性'spring.cloud.stream.bindings.output.destination = time-topic',我將它註冊爲scdf中的應用程序(將其命名爲my-source-app)並使用它來組合一個流(將其命名爲my-stream),並將其部署到我的yarn-cluster(沒有任何顯式部署屬性),然後頻道目標將是'my-stream.my-source-app',但不是'time-topic'。我希望它是'時間主題',這意味着我的應用程序內的屬性可以生效 – zjunothing

+0

應用程序內部的屬性獲得最低的優先級,因此覆蓋發生。當您在問題中勾結時,您需要在部署流時將'app.myapp.spring.cloud.stream.bindings.output.destination = time-topic'設置爲部署屬性的一部分。 –

+0

你說應用程序內的屬性的優先級最低。但是,如果我沒有設置任何部署屬性(沒有更高的優先屬性),應用程序內的屬性應該生效嗎? – zjunothing