Общая информация ================================ **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 запросов. Пример контекста с маршрутом: .. image:: _static/Camel_1.png :width: 600 :align: center | Тип запуска: * **MANUALLY** - Работает, как и обычный Camel DSL. Запускается и останавливается через действие. * **IMPORT_DATA** - Используется для описания обработки файла при Импорте данных В контекст Camel DSL можно прикладывать файлы в формате base64. В конфиге можно указать название файла и его контент: .. code-block:: yaml file: name: Пользователи.xlsx content: 'UEsDLVsnEoVzlgUAAJYFAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzd=' После деплоя в Camel DSL будет сразу приложенный файл: .. image:: _static/Camel_content.png :width: 600 :align: center .. note:: Атрибут = свойство = поле Целевая БД = БД назначения = целевой источник данных — куда данные помещаются Исходная БД = исходный источник данных — откуда данные берутся