Apache Camel. Запусти свой первый маршрут

07.11.24

Интеграция - WEB-интеграция

Разбираем, как максимально просто запустить свой первый маршрут на Apache Camel.

Возможно, вы слышали, что порой Apache Camel используется для создания продуктов класса ESB. У него огромные возможности. Можно интегрировать что угодно с чем угодно. Файлы, ftp, почта, брокеры, да все, что угодно. Выбирайте компоненты на любой вкус. Apache Camel позволяет написать маршрут не только при помощи java dsl, но и xml dsl, и yaml dsl. Да, java знать не обязательно!

Вот пример маршрута, который запускается по таймеру (раз в пять секунд), устанавливает в качестве тела "Hello, world!" и выводит тело сообщения в лог:

<route>
    <from uri="timer://my-timer?period=5000" />
    <setBody>
        <constant>Hello, world!</constant>
    </setBody>
    <to uri="log:com.example" />
</route>

Согласитесь, это красиво. Ничего лишнего. Начинаться маршрут может не только с таймера (это лишь пример), а, например, с получения сообщения из брокера сообщений. И заканчиваться, соответственно, он тоже может чем угодно (записью файла, отправкой сообщения в брокер сообщений и т.д.). Также внутри маршрута могут быть всякого рода преобразования, условия и многое другое.

Но как же запустить этот маршрут?  Вариантов тут несколько. Можно создать maven-проект и скомпилировать его. Можно где-то запустить Apache Karaf с Camel на борту и скормить ему маршрут. Но все это звучит как-то сложновато. Да и не хочется ставить дополнительный софт себе на машину. Хочется ведь скорее попробовать свой первый маршрут, а не разбираться во всех этих сложностях, правда?

И такой вариант есть. Можно запустить свой первый маршрут в докере. Ну да, допускаю, что тут тоже кто-то может отвалиться). Ну вот такое допущение, что вы знакомы с докером.

Для тех, кто остался. Есть официальный образ camel-jbang. Правда, там есть проблемы с запуском. Не буду тут вдаваться в подробности, это можно обсудить в комментариях. Я попробовал немного подкорректировать докер-файл из репозитория Apache Camel так, чтобы запустить наш первый маршрут было максимально просто.

Итак, инструкция по запуску нашего первого маршрута для Apache Camel.

  1. Склонируте репозиторий https://github.com/pila86/apache-camel-simple-examples. Ну или просто скачайте архив и распакуйте его
    git clone https://github.com/pila86/apache-camel-simple-examples

     

  2. Перейдите в каталог
    cd ./apache-camel-simple-examples

     

  3. Поправьте при необходимости маршрут, который находится в "./examples/hello-world.camel.xml". Можно пропустить этот шаг.
  4. Запустите маршрут при помощи docker compose:
    docker compose up

     

Вот, собственно, и все. Наблюдаем в консоли результат работы нашего маршрута:

camel-jbang-1  | 2024-11-06 17:40:24.693  INFO 7 --- [           main] org.apache.camel.main.MainSupport        : Apache Camel (JBang) 4.8.1 is starting
camel-jbang-1  | 2024-11-06 17:40:24.806  INFO 7 --- [           main] org.apache.camel.main.MainSupport        : Using Java 21.0.5 with PID 7. Started by root in /
camel-jbang-1  | 2024-11-06 17:40:24.886  INFO 7 --- [           main] org.apache.camel.main.ProfileConfigurer  : The application is starting with profile: dev
camel-jbang-1  | 2024-11-06 17:40:25.272  INFO 7 --- [           main] he.camel.cli.connector.LocalCliConnector : Camel JBang CLI enabled
camel-jbang-1  | 2024-11-06 17:40:25.310  INFO 7 --- [           main] e.camel.impl.engine.AbstractCamelContext : Apache Camel 4.8.1 (hello-world) is starting
camel-jbang-1  | 2024-11-06 17:40:25.429  INFO 7 --- [           main] e.camel.impl.engine.AbstractCamelContext : Routes startup (total:1)
camel-jbang-1  | 2024-11-06 17:40:25.429  INFO 7 --- [           main] e.camel.impl.engine.AbstractCamelContext :     Started route1 (timer://my-timer)
camel-jbang-1  | 2024-11-06 17:40:25.429  INFO 7 --- [           main] e.camel.impl.engine.AbstractCamelContext : Apache Camel 4.8.1 (hello-world) started in 118ms (build:0ms init:0ms start:118ms)
camel-jbang-1  | 2024-11-06 17:40:26.377  INFO 7 --- [imer://my-timer] com.example                              : Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello, world!]
camel-jbang-1  | 2024-11-06 17:40:31.370  INFO 7 --- [imer://my-timer] com.example                              : Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello, world!]
camel-jbang-1  | 2024-11-06 17:40:36.371  INFO 7 --- [imer://my-timer] com.example                              : Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello, world!]
camel-jbang-1  | 2024-11-06 17:40:41.370  INFO 7 --- [imer://my-timer] com.example                              : Exchange[ExchangePattern: InOnly, BodyType: String, Body: Hello, world!]

Надеюсь, у вас получилось. Если возникли сложности - пишите в комментариях. Пишите, интересны ли другие примеры, или стоит написать, как можно запустить и отладить маршрут в vs code? А еще можно использовать Karavan, чтобы собрать маршрут из "кубиков". Также есть некоторые мысли по примеру маршрута, который подключится сразу к нескольким базам 1С через odata (причем параллельно) и соберет определенные данные в одно сообщение.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17778    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19835    13    17    

16

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14417    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1163    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3593 07.11.24 11:16 Сейчас в теме
Тема интересная, но...
Вот после прочтения как вы думаете сколько человек захочет это сделать?
Думаю около 0.

Почему?
Потому, что тема не раскрыта.
Ну запустили, а для чего? Что дальше?

Если бы статья была про конкретную, пусть и "Демо задачу" с ее решением при помощи этого инструмента.
С принскринами и описанием. Вот тогда, да.

А так получается: тот кто в теме - тому мало и не интересно, а тот кто НЕ в теме - мало и непонятно.

П.С. Плюсик поставил авансом
SerVer1C; r2d255; ixijixi; +3 Ответить
3. pila86 133 07.11.24 14:42 Сейчас в теме
(1) Спасибо за отзыв! Я бы и рад пример приложить, но какой? Каждому интересны свои примеры. Кому-то брокеры, кому-то рест сервис поднять. Да и все эти примеры уже есть в документации кемела. Лучше я вряд ли напишу. А вот проблемы с запуском вполне могут быть, если человек не умеет в джава (как и я). Хочется писать маршрут и не тратить много времени на разворачивание инфраструктуры.
4. dsdred 3593 07.11.24 15:23 Сейчас в теме
(3)
Каждому интересны свои примеры. Кому-то брокеры, кому-то рест сервис поднять.


Как минимум две статьи вы только что придумали.

Да и все эти примеры уже есть в документации кемела.


Сомневаюсь, что там есть примеры из мира 1с
8. pila86 133 07.11.24 21:18 Сейчас в теме
(4)
Сомневаюсь, что там есть примеры из мира 1с

Но ведь, если говорить про интеграцию, нам все равно выглядывать из мира 1С. И можно иногда подглядывать, как оно там вообще бывает.
9. dsdred 3593 07.11.24 22:12 Сейчас в теме
(8) Вы собеседовали когда ни будь программистов 1С?

Я задаю часто вопрос: Какие виды транспорта вы знаете?

Даже не представляете какую дичь можно услышать.
В мире 1с есть большая проблема которую создала фирма 1с и франчайзи. В связке они плодят программистов, которых я называю "из желтой коробочки". Для таких программистов интеграция = КД и без вариантов, а на вопросы связанные с SQL они отвечают: -А зачем мне SQL я же 1с программист.
В итоге сама 1С уничтожает ИТшников, убивает им кругозор и те просто не знают про какие-то вещи которые можно делать не только через 1С. Для них манна небесная выводить красоту в поле htmlДокумета и для них мобильное приложение = мобильная платформа 1с и это многострадальное поле htmlДокумета. Для них BI это только либо поле htmlДокумета в которое они выводят красоту ухудшая самочувствие самой системы, либо 1с Аналитика.

Ко мне недавно обратился программист не из мира 1С который сказал: -Ты даже не представляешь как трудно найти 1Сника который может сделать API и не пугается от слово JSON.

Звучит смешно, правда? Но это правда...
Вот поэтому я пишу, разжевываю и ложу в рот. Я стараюсь чтобы у людей был кругозор, а для этого нужна проблема и ее решение.
kondrat1C; pila86; +2 Ответить
2. quazare 3800 07.11.24 11:56 Сейчас в теме
Ну много на самом деле подобных постов - человек в чем-то разобрался, что-то написал... кто будет разбираться - тем эта статья безусловно полезна...

другое дело, сколько эта "технология" просуществует и на сколько она востребована?
7. pila86 133 07.11.24 21:05 Сейчас в теме
(2)
другое дело, сколько эта "технология" просуществует и на сколько она востребована?

Кемел с 2008 года существует, и по прежнему довольно часто выпускаются релизы. Если верить гитхабу, то там более тысячи контрибуторов. Думаю, просуществует он еще долго.
На счет востребованности, тут трудно угадать пожалуй. Ради интереса поискал на хх вакансии по словам Apache Camel, что-то там находится :)
5. user612295_death4321 07.11.24 15:24 Сейчас в теме
Как-то попросил партнера посчитать, сколько мне будет стоить построить интеграционный транспорт на базе кафки + то что указано в статье, получил ценник в 120 млн и я в итоге решил взять датареон)))

Дело было в 2021 году
6. pila86 133 07.11.24 16:30 Сейчас в теме
(5) Датареон использует у себя под капотом кафку? Если нет, тогда куда же делось ваше требование построить транспорт на базе кафки при покупке датареона? Плюс требования можно выдвинуть разные для "посчитать".
Кемел позволяет хоть вокруг кафки построить обмен, хоть вокруг любого более или менее известного брокера сообщений.
11. user612295_death4321 08.11.24 07:04 Сейчас в теме
(6)

У датареона свое + опенсорс (если говорить про ESB, в новом platform уже свои компоненты). Кафка мне была навязана сверху, но после сравнения TCO на эксплуатацию и на развитие + сопровождение, я провел нагрузочное тестирование датареона и те цифры которые я из него выжал, мне оказались достаточными. После чего, я отклонил предложение сверху о кафке, т.к. эксплуатация всего этого комбайна была бы у меня.

Я не имею ничего против описанного в статье, просто флешбекнуло от букв Apache Camel, Apache Karaf и т.д. :)
10. Светлый ум 415 08.11.24 07:04 Сейчас в теме
как всегда комментарии интереснее статьи)
akR00b; kondrat1C; +2 Ответить
12. kondrat1C 55 08.11.24 08:24 Сейчас в теме
ничего не понял, но очень интересно (с)
))
Оставьте свое сообщение