2017-02-03 4 views
0

Я пытаюсь использовать Spring Cloud Dataflow для соединения двух кластеров Kafka (по сути, причудливого экземпляра MirrorMaker) с помощью приложения Bridge. Как описано в документах, я определил два связующих. Kafka-qa1 должен быть по умолчанию, а kafka-qa2 может быть предоставлен в свойствах определения или развертывания в качестве выходного связующего, например: app.bridge.spring.cloud.stream.bindings.output.binder = kafka-qa2Spring Cloud Dataflow с несколькими связями Kafka

Мой SCDF 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, похоже, не работает, и она возвращается к localhost.

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

Любые идеи или примеры, указывающие мне на подключение нескольких кластеров Kafka с помощью приложения Bridge?

ответ

0

Похоже, что токен environment отсутствует spring.cloud.stream.kafka.binder префикс для и zk-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 "', и когда вы развертываете поток, вы передадите свойства связующего на «мостовой процессор», например : '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 "' –