Управление и настройка

Интеграционные взаимодействия описываются маршрутами, которые представляют пошаговую передачу сообщения между входной и выходной конечными точками.

Компоненты-обработчики

Медиатор Описание

camel:onException

Используется для настройки обработки ошибок для каждого типа исключения.

camel:when

Определяет условие для ветвления маршрута. Позволяет выбирать различные пути обработки сообщений в зависимости от условий определенных в блоках when.

camel:onCompletion

Настройка действий при завершении обработки маршрута.

camel:intercept

Используется для перехвата каждого этапа обработки сообщений (Exchange) в маршруте.

camel:interceptFrom

Позволяет перехватывать все входящие запросы в маршруте, позволяя выполнять заданное поведение перед их обработкой.

camel:interceptSendToEndpoint

Используется для перехвата момента, когда сообщение готовится к отправке в указанную конечную точку (endpoint) и выполнения заданного действия перед отправкой.

camel:to

Используется для отправки сообщений в указанные статические конечные точки (endpoint).

camel:toD

Используется для отправки сообщений в указанные динамические конечные точки (endpoint).

camel:route

Используется для определения маршрута сообщений.

camel:aggregate

Используется для объединения нескольких сообщений в одно.

camel:bean

Интегрирует Java-bean с контейнером сообщений (Exchange) Camel.

camel:doCatch

Обрабатывает исключения в блоке try-catch.

camel:choice

Реализует условное ветвление маршрута. Используется для маршрутизации сообщений на основе заданных условий.

camel:otherwise

Часть элемента choice, которая определяет действие для выполнения, если ни одно из предыдущих условий в блоке choice не выполнено.

camel:circuitBreaker

Circuit Breaker — шаблон, используемый для защиты от перегрузок и сбоев.

Он контролирует выполнение операций, переключаясь между тремя основными состояниями:

Closed: при успешном функционировании операции.

Open: при обнаружении ошибки операция блокируется, чтобы предотвратить нагрузку на систему.

Half-Open: после блокировки система делает попытку выполнить операцию, чтобы проверить, возможно ли её успешное завершение.

camel:claimCheck

claimCheck - шаблон, используемый для замены содержимого сообщения уникальным ключом (claim check), который позволяет в дальнейшем извлекать и восстанавливать исходное содержимое сообщения.

camel:convertBodyTo

Преобразует тело сообщения в указанный тип.

camel:delay

Задерживает передачу сообщения на определённое время, прежде чем оно будет передано дальше по маршруту.

camel:dynamicRouter

Позволяет динамически определять путь маршрутизации для сообщений в зависимости от условий или состояния обработки.

camel:enrich

Позволяет дополнять сообщение данными из внешнего источника.

camel:filter

Позволяет продолжать или останавливать обработку сообщения по определённым критериям.

camel:doFinally

Выполняет завершающие действия в блоке try-finally.

camel:idempotentConsumer

Фильтрует повторяющиеся сообщения, предотвращая их повторную обработку. Система Camel автоматически добавляет идентификаторы сообщений в хранилище для обнаружения дубликатов, включая сообщения, которые находятся в процессе обработки. По завершении обмена Camel удаляет идентификаторы сообщений из хранилища в случае ошибки или сохраняет их в случае успешной обработки.

camel:inOnly

Отправляет сообщение в конечную точку (endpoint) в асинхронном режиме без ожидания ответа.

camel:inOut

Отправляет сообщение в конечную точку (endpoint) в синхронном режиме и ожидает ответа от получателя.

camel:loadBalance

Распределяет входящие сообщения между несколькими конечными точками (endpoint’ами) для балансировки нагрузки и повышения отказоустойчивости системы.

camel:log

Используется для логирования процесса обработки сообщений в процессе маршрутизации.

camel:loop

Позволяет обрабатывать сообщение несколько раз, используя различные способы на каждой итерации.

camel:marshal

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

camel:multicast

Позволяет передавать одно сообщение нескольким получателям.

camel:onFallback

Предназначен для локальной обработки в случае, если основной маршрут завершился неудачей. Он позволяет выполнить действия, такие как преобразование сообщений или вызов bean-компонента, обеспечивая отказоустойчивость и обработку ошибок.

camel:pipeline

Позволяет разделить обработку сообщения на несколько независимых конечных точек (endpoints), которые затем могут быть объединены в цепочку для последовательной обработки сообщения.

camel:policy

Применяет политики безопасности к маршруту.

camel:pollEnrich

Использует Polling Consumer для получения дополнительных данных. Обычно используется для обмена сообщениями событий, например, для чтения файла или загрузки данных с FTP.

camel:process

Используется для обработки обмена сообщениями.

camel:recipientList

Используется для отправки сообщений нескольким динамически определяемым получателям.

camel:removeHeader

Удаляет заголовок сообщения.

camel:removeHeaders

Позволяет удалять один или несколько заголовков из сообщения на основе синтаксиса шаблона.

camel:removeProperties

Позволяет удалить одно или несколько свойств контейнера сообщений (Exchange) на основе синтаксиса шаблона.

camel:removeProperty

Позволяет удалить одно свойство из контейнера сообщений (Exchange).

camel:resequence

Перестраивает порядок сообщений.

camel:rollback

Используется для маркировки контейнера сообщений (Exchange) для отката и прекращения дальнейшей маршрутизации.

camel:routingSlip

Медиатор, который направляет сообщение по заранее определенному списку конечных точек, что позволяет гибко управлять маршрутизацией сообщений на основе динамически задаваемого списка.

camel:saga

Определяет последовательность взаимосвязанных действий в маршруте, которые должны быть либо успешно завершены (все), либо отменены/откатаны.

camel:sample

Отбирает выборку сообщений для обработки.

camel:script

Используется для выполнения заданного скрипта.

camel:setBody

Используется для преобразования тела сообщения.

camel:setExchangePattern

Устанавливает шаблон обмена сообщениями. Определяет тип взаимодействия между отправителем и получателем сообщения, указывая, должен ли обмен быть односторонним или двусторонним (с ответом).

camel:setHeader

Используется для установки заголовка сообщения.

camel:setProperty

Используется для настройки свойств обработки сообщений (Exchange).

camel:sort

Сортирует содержимое сообщения.

camel:split

Позволяет разделить сообщение на несколько частей и обработать их по отдельности.

camel:step

Включает шаги для обработки сообщений. Step - логическая единица в маршруте Camel, объединяющая независимые процессоры для организации группы операций.

camel:stop

Останавливает маршрутизацию сообщений.

camel:threads

Позволяет отправить сообщение в пул потоков для его дальнейшей обработки, отделяя процесс маршрутизации от текущего потока.

camel:throttle

Ограничивает частоту обработки сообщений.

camel:throwException

Позволяет генерировать исключения в процессе маршрутизации сообщений, контролируя логику обработки ошибок в интеграционных маршрутах.

camel:transacted

Transactional Client - предоставляет возможность конфигурирования распределённых транзакций для специально подготовленных компонентов.

camel:transform

Используется для преобразования одного формата данных в другой.

camel:doTry

Реализует блок try-catch-finally.

camel:unmarshal

Преобразует данные из бинарного или текстового формата в объект Java или в другой объект в зависимости от используемого формата данных.

camel:validate

Использует выражение или предикат для проверки содержимого сообщения. Если сообщение недействительно, возникает исключение PredicateValidationException.

camel:whenSkipSendToEndpoint

Пропускает отправку сообщения в конечный пункт при заданном условии.

camel:wireTap

Перехватывает и копирует сообщение для отправки в другой конечный пункт.

camel:serviceCall

Используется в качестве шлюза обмена сообщениями (Messaging Gateway) для распределенных систем.

Content-Based Routing

Шаблон корпоративной интеграции "маршрутизация на основании содержимого" поддерживается изменение конечной точки и маршрутизации сообщения на основании анализа содержимого контента.

Инструкция по разработке компонентов

Пользовательский интерфейс позволяет настраивать компоненты apache camel, использую xml dsl фреймворка camel. Для использования java dsl необходимо создать проект, который может быть собран в виде osgi бандла и задеплоен в шину.

Формирование интеграционных маршрутов

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

Конфигурация конечных точек

Конечная точка использует уникальный идентификатор ресурса (uri) для настройки протокола, адреса и параметров взаимодействия.

Преобразование данных

Преобразование данных доступно как через механизмы шаблонизации (XSLT, FreeMarker, Velocity, …​), так и через модификацию данных при помощи скриптовых языков и языков выражений (simple, ognl, groovy, …​).