Общая информация

Apache Camel — открытый кроссплатформенный java-фреймворк, который позволяет проводить интеграцию приложений в простой и понятной форме.

Camel использует доменные языки (Domain Specific Language - DSL) для описания проектных шаблонов интеграции или маршрутов.

В Citeck используется Yaml DSL для описания маршрутов в формате YAML и XML DSL.

Camel-контекст – главная сущность Camel. Контекст является контейнером среды выполнения Camel. Контекст предоставляет много полезных сервисов, наиболее значимыми являются маршруты, компоненты, языки, конверторы типов, реестр, endpointы и форматы данных.

Маршрут – определение интеграционного потока. Например, для объединения двух систем маршрут определяет, как именно эти системы взаимодействуют.

Компоненты — подробно описаны по ссылке

  • Bean – для вызова методов Java-бинов, хранящихся в реестре;

  • Direct – вызывает другой endpoint из того же контекста синхронно;

  • Direct VM - вызывает другой endpoint из любого контекста на той же JVM синхронно;

  • File – читает и записывает файлы;

  • Timer – генерирует сообщения с определенным интервалом, используя java.util.Timer;

  • JDBC – предоставляет доступ к базам данных через JDBC;

  • Jetty – предоставляет endpoint на основе HTTP для получения и отправки HTTP запросов.

Пример контекста с маршрутом:

../../_images/Camel_1.png

Тип запуска:

  • MANUALLY - Работает, как и обычный Camel DSL. Запускается и останавливается через действие.

  • IMPORT_DATA - Используется для описания обработки файла при Импорте данных

В контекст Camel DSL можно прикладывать файлы в формате base64. В конфиге можно указать название файла и его контент:

file:
  name: Пользователи.xlsx
  content: 'UEsDLVsnEoVzlgUAAJYFAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzd='

После деплоя в Camel DSL будет сразу приложенный файл:

../../_images/Camel_content.png

Примечание

Атрибут = свойство = поле

Целевая БД = БД назначения = целевой источник данных — куда данные помещаются

Исходная БД = исходный источник данных — откуда данные берутся