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С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    22776    33    24    

26

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 14688 руб.

20.12.2024    4899    23    4    

24

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    11257    7    6    

12

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    21426    61    52    

39

WEB-интеграция Анализ продаж Системный администратор Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Модуль "Подсистема интеграции AmoCRM с 1С" позволяет обеспечить единое информационное пространство, в котором пользователи могут эффективно управлять клиентской базой, следить за статусами сделок и поддерживать актуальность данных как в AmoCRM, так и в 1С.

60000 руб.

07.05.2019    40448    74    45    

31

WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена по API между конфигурацией 1С:Альфа-Авто 6 и порталом LogicStar. Позволяет работать с несколькими обменами LogicStar разных брендов (CHERY, OMODA, JAECOO, EXEED, TENET) в одной информационной базе в ручном и автоматическом режиме. Поддерживается выгрузка заказ-нарядов, реализаций товаров и товарных остатков.

20400 руб.

13.05.2025    1376    1    0    

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

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

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

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

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


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

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


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

Но ведь, если говорить про интеграцию, нам все равно выглядывать из мира 1С. И можно иногда подглядывать, как оно там вообще бывает.
9. dsdred 4166 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 3981 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. Светлый ум 456 08.11.24 07:04 Сейчас в теме
как всегда комментарии интереснее статьи)
akR00b; kondrat1C; +2 Ответить
12. kondrat1C 55 08.11.24 08:24 Сейчас в теме
ничего не понял, но очень интересно (с)
))
13. real_donald_trump 02.01.25 03:16 Сейчас в теме
.. не умеет в джава ..
Для отправки сообщения требуется регистрация/авторизация