2017-02-03 42 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“' –