#apache-kafka #spring-cloud-stream #spring-cloud-dataflow
Вопрос:
Проблема, с которой я сталкиваюсь, заключается в перемещении данных с помощью spring cloud data flow (SCDF) через среду, чтобы доставить данные в нужное место. ниже представлена ситуация:
- У меня есть производственная версия Кафки, на которую мне разрешено подписываться только (только для чтения). (кластер из 3 узлов: узел 1:9092,узел 2:9092,узел 3:9092)
- У меня есть экземпляр SCDF, работающий в кластере Kubernetes, который использует магистраль RabbitMQ (все на одном сервере)
- У меня есть сервер Кафки с одним узлом, который используется другой компанией для получения данных (защищен ssl).
При взгляде на SCDF я не вижу способа определить Кафку как источник и прочитать в процессор (будет пользовательским) и записать в другой экземпляр Кафки.
Ответ №1:
Вы можете использовать именованное назначение вместе с поддержкой нескольких связующих.
RabbitMQ Binding -> processor -> named Kafka Destination
https://dataflow.spring.io/docs/feature-guides/streams/taps/#tapping-a-stream
В терминах Spring Cloud Stream именованное место назначения-это конкретное имя места назначения в промежуточном программном обеспечении обмена сообщениями или потоковой платформе. Это может быть обмен в RabbitMQ или тема в Apache Kafka. В потоке данных Spring Cloud именованное место назначения может рассматриваться либо как прямой источник, либо как приемник, в зависимости от того, выступает ли оно в качестве издателя или потребителя. Вы можете либо использовать данные из пункта назначения (пример: тема Кафки), либо создавать данные для пункта назначения (например, тема Кафки). Поток данных Spring Cloud позволяет создавать конвейер потоковой передачи событий от и до места назначения в промежуточном программном обеспечении обмена сообщениями с помощью поддержки именованного места назначения.
http > :user-click-events
:user-click-events > jdbc
Если в пути к классу присутствует несколько связующих, приложение должно указать, какое связующее должно использоваться для каждой целевой привязки.
Так:
:RO_Kafka > processor_1 | ... | processor_n > :otherKafka
С processor_1
processor_n
несколькими связующими и сконфигурированными с ними.