2017-02-03 122 views
0

我正在嘗試使用Spring雲端數據流橋接兩個使用Bridge應用的Kafka羣集(本質上是一個花哨的MirrorMaker實例)。正如文檔中所述,我定義了兩個綁定器。卡夫卡QA1應該是默認的,並且可以在定義或部署屬性作爲輸出粘結劑例如被提供卡夫卡-QA2: app.bridge.spring.cloud.stream.bindings.output.binder =卡夫卡-QA2春季雲端數據流與多個Kafka粘合劑

我的新加坡民防部隊application.yaml同時包含粘合劑:

spring: 
    cloud: 
    dataflow: 
     applicationProperties: 
     stream: 
      spring: 
      cloud: 
       stream: 
       defaultBinder: kafka-qa1 
       binders: 
        kafka-qa1: 
        type: kafka 
        environment: 
         spring: 
         brokers: qa-1.example.com:9093 
         zk-nodes: qa-1.example.com:2181 
        kafka-qa2: 
        type: kafka 
        environment: 
         spring: 
         brokers: qa-2.example.com:9093 
         zk-nodes: qa-2.example.com:2181 

但是它似乎忽略輸出粘合劑。我還在我的配置中保留了該部分以用於單個活頁夾(以下)。如果我刪除它,defaultBinder選項似乎不起作用,它將恢復到本地主機。

kafka: 
binder: 
    brokers: qa-1.example.com:9093 

任何想法或示例指向我連接多個Kafka集羣與Bridge應用程序?

回答

0

它看起來像是environment令牌丟失spring.cloud.stream.kafka.binder前綴爲brokerszk-nodes。請看下面。

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.binders.kafka-qa1.type =卡夫卡

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream .binders.kafka-qa1.environment。 spring.cloud.stream.kafka.binder .brokers = qa-1.example.com:9093

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.binders.kafka-qa1.environment 。 spring.cloud.stream.kafka.binder .zkNodes = qa-1.example.com:2181

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.binders.kafka2.type =卡夫卡

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.binders.kafka-qa2.environment。 spring.cloud.stream.kafka.binder .brokers = qa-2.example.com:9093

spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.binders.kafka-qa2.environment 。 spring.cloud.stream.kafka.binder .zkNodes = qa-2.example.com:2181

+0

這讓我爲默認粘結劑爲QA1工作,輸出粘結劑沒有出現,雖然圖還要工作。這是我正在使用的流定義,它試圖輸出到qa1(獲取主題不存在錯誤): 'stream create bridge-test --definition「:myTopic1>:myTopic2 --spring.cloud .stream.bindings.input.binder = kafka-qa1 --spring.cloud.stream.bindings.output.binder = kafka-qa2「--deploy' –

+0

您仍然需要定義輸入/輸出通道才能夠引腳主題分別爲。爲了做到這一點,您必須使用'橋接處理器' - 這是我們內部使用的橋接命名目的地與上游或下游應用程序。 –

+0

然後,您的流定義變爲: 'stream create bridge-test --definition「:myTopic1> bridge>:myTopic2」'當您部署流時,您需要將binder屬性傳遞給「橋處理器」 : 'stream deploy bridge-test --properties「app.bridge.spring.cloud.stream.bindings.input。binder = kafka-qa1,app.bridge.spring.cloud.stream.bindings.output.binder = kafka-qa2「' –