Dynami c Конфигурация верблюжьего маршрута во время развертывания: Java DSL или XML DSL? - PullRequest
0 голосов
/ 03 апреля 2020

Позвольте мне предварить это тем фактом, что я все еще очень плохо знаком с Apache Верблюдом. Я все еще пытаюсь понять, как все это работает, и что нужно сделать (и КАК это сделать) для достижения определенного эффекта.

Я пытаюсь разработать приложение Spring Boot, которое будет использовать Apache Верблюд для управления передачей (и, возможно, также получением) данных в / из ряда возможных источников и пунктов назначения. Цель приложения - предоставить средства для создания / генерации сетевого трафика c, на уровне сетевого приложения , который будет передаваться в другое приложение Spring Boot - назовем это целевым объектом. Мы пытаемся наблюдать и измерять влияние различных сетевых нагрузок на цель.

Мы хотели бы иметь возможность передавать данные по ряду протоколов, включая: ftp, http / s, файловые системы (nfs ), различные почтовые протоколы (smtp, pop) и протоколы потоковой передачи данных для голоса и видео. Возможно, позже будут добавлены другие протоколы. Сами данные не имеют значения, нам просто нужно иметь возможность передавать данные по различным протоколам с различными нагрузками.

Эти приложения / службы будут работать в контейнерной среде (Docker), которая будет выполняться в нашем локальная среда разработки и тестирования, а также, возможно, облачная среда, такая как AWS. Мы использовали Docker, Ansible, Terraform и в настоящее время работаем над использованием Kubernetes и Istio для управления настройкой, развертыванием и эксплуатацией этих приложений.

Мы должны быть в состоянии предоставить указать c конфигурации маршрутов Camel для конкретных развертываний.

Может показаться, что предпочтительным способом настройки маршрутов Camel является использование Java DSL, а не XML DSL. Документация Camel и почти любой другой источник информации, который я обнаружил, имеют сильный уклон к использованию Java DSL. Примеров конфигурации XML DSL-маршрутов далеко и мало.

Мое первоначальное впечатление состоит в том, что переход по маршруту Java DSL (извините за каламбур) не будет работать должным образом с нашей необходимостью развертывания Приложение Camel с заданной конфигурацией маршрута c. Похоже, вам необходимо иметь в коде Java определенные в DSL конфигурации маршрутов, встроенные в код.

Мы думаем, что будет проще предоставить конкретную c конфигурацию маршрута через файл XML, который может быть включенным в развертывание, поэтому я пытаюсь исследовать и экспериментировать с XML DSL. Возможно, мы ошибаемся в этом отношении.

Мой вопрос к сообществу: : Учитывая то, что я описал выше, можно ли использовать подход Java DSL для удовлетворения требований, поскольку я описал их? Можем ли мы использовать Java DSL таким образом, чтобы можно было настроить динамический c маршрут? Имейте в виду, что мы не будем пытаться изменить конфигурацию во время работы, просто в процессе развертывания.

Если Java DSL может использоваться для этой цели, это будет очень признателен, если ссылки на документацию, примеры и т. д. c. могут быть предоставлены.

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Для ваших случаев использования вы также можете использовать XML DSL. Во всяком случае, ниже книга охватывает большинство аспектов развития верблюдов с примерами. В этой книге авторы описывают использование XML DSL для большинства примеров java DSL. https://www.manning.com/books/camel-in-action-second-edition В репозитории github ниже вы можете найти исходный код для всех примеров, перечисленных в книге выше. https://github.com/camelinaction/camelinaction2

Простой учебник и репозиторий github для Apache Верблюд с использованием Spring boot. https://www.baeldung.com/apache-camel-spring-boot https://github.com/eugenp/tutorials/tree/master/spring-boot-modules/spring-boot-camel

Плагин Maven для сборки и развертывания приложения пружинного загрузочного контейнера в кластер Kubernetes https://maven.fabric8.io/

В случае, если ваша компания может позволить себе финансирование для ваших усилий, перейдите по ссылке ниже, которая предоставляет коммерческие предложения вокруг Camel. https://camel.apache.org/manual/latest/commercial-camel-offerings.html

Спасибо, Мадху Гупта

0 голосов
/ 03 апреля 2020

У нашей команды есть несколько проектов, которые используют Java DSL для построения маршрутов. Чтобы сделать их динамичными c, существуют структуры управления для итерации и установки конечных точек на основе конфигураций. Это работает для нас, потому что маршруты в основном одинаковы, только с разными источниками и приемниками.

Если вы можете динамически добавлять / изменять файлы XML DSL таким образом, чтобы не требовалось повторное развертывание приложения, это может быть жизнеспособным путем. Например, можно изменить свойство camel.springboot.xml-routes, чтобы оно указывало на папку, которая изменяется по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...