Перейти к основному содержимому
Руководство администратора
How To статьи
Установка и настройка
Компоненты
Руководство пользователя
Начало работы

Основные функции

Bercut ESB предоставляет поддержку языка Simple, который обеспечивает легкий доступ и управление данными и свойствами объекта Exchange.

В таблице ниже приведено описание основных функций Simple.

ФункцияТип ответаОписание
bean(name.method)ObjectВызов выражения bean с использованием языка Bean. При указании имени метода необходимо использовать точку в качестве разделителя. Также поддерживается синтаксис ?method=имя_метода, который используется компонентом Bean. Camel по умолчанию будет искать bean по заданному имени. Однако, если вам нужно сослаться на класс bean (например, для вызова статического метода), вы можете добавить префикс с типом, например bean:type:fqnClassName.
bodyAs(type)<T>Преобразует тело в заданный тип, определяемый его именем класса.
bodyOneLineStringПреобразует тело в строку и удаляет все разрывы строк, чтобы результат был одной строкой.
bodyTypeClassКласс тела сообщения.
bodyObjectТело сообщения.
convertTo(type)<T>Преобразует тело сообщения в указанный тип.
convertTo(exp,type)<T>Преобразует выражение в указанный тип.
exceptionThrowableОбъект Exception, равен null, если исключение не установлено в Exchange. Будет выполнен откат и захват любых перехваченных исключений, сохраненных как свойство обмена (Exchange.EXCEPTION_CAUGHT).
exception.messageStringСообщение от объекта Exchange.
exception.stacktraceStringТрассировка стека от объекта Exchange.
exchangeIdStringИдентификатор текущего Exchange.
exchangeProperty.keyObjectВозвращает значение свойства Exchange с заданным ключом. Возвращает null, если свойство не существует.
exchangeExchangeТекущий объект Exchange.
fromRouteIdStringВозвращает исходный идентификатор маршрута, где был создан этот Exchange.
function(name,exp)ObjectВызывает пользовательскую функцию с заданным именем, используя тело сообщения (или выражение) в качестве входного параметра.
header.keyObjectЗаголовок сообщения с заданным ключом.
headerAs(key,type)<T>Заголовок сообщения с заданным ключом, преобразованный в заданный тип.
headers.sizeintКоличество заголовков.
headersMapВсе заголовки сообщения в виде java.util.Map.
idStringИдентификатор сообщения.
kindOfType(exp)StringОпределяет тип значения (null, number, string, boolean, array, object).
length()intДлина полезной нагрузки (количество байт) тела сообщения.
length(exp)intДлина полезной нагрузки (количество байт) выражения.
logExchangeStringВыгружает Exchange для целей журналирования (использует ExchangeFormatter для форматирования вывода).
mandatoryBodyAs(type)<T>Преобразует тело сообщения в заданный тип. Если тело равно null, выбрасывается исключение.
messageAs(type)<T>Преобразует сообщение в заданный тип.
messageHistoryStringИстория сообщений текущего Exchange (как он был маршрутизирован). Это похоже на трассировку стека маршрута, которую обработчик ошибок записывает в журнал в случае необработанного исключения.
messageHistory(false)StringТо же, что и messageHistory, но без деталей обмена (включает только трассировку стека маршрута). Это можно использовать, если вы не хотите регистрировать конфиденциальные данные из самого сообщения.
messageTimestamplongВозвращает временную метку (timestamp) сообщения — количество миллисекунд, прошедших с эпохи Unix (1 января 1970 года, 00:00:00 UTC), когда сообщение было создано в исходной системе.
Некоторые системы, такие как JMS, Kafka, AWS, имеют временную метку для полученного события/сообщения. Этот метод возвращает временную метку, если она существует. Временная метка сообщения и время создания Exchange отличаются. У Exchange всегда есть временная метка создания, которая является локальной временной меткой создания. Временная метка сообщения доступна только в некоторых компонентах, где получатель может извлечь временную метку из исходного события. Если сообщение не имеет временной метки, возвращается 0.
originalBodyObjectИсходное входящее тело сообщения (доступно только если сконфигурирована настройка allowUseOriginalMessage=true).
properties:key:defaultStringИщет заполнитель свойства с заданным ключом. Если ключ не существует или не имеет значения, может быть указано необязательное значение по умолчанию.
propertiesExist:keybooleanПроверяет, существует ли заполнитель свойства с заданным ключом. Результат можно инвертировать, добавив префикс ! к ключу.
ref:keyObjectДля поиска bean в реестре по заданному ключу.
routeGroupStringВозвращает группу текущего маршрута, по которому маршрутизируется Exchange. Не все маршруты имеют назначенную группу, поэтому здесь может быть null.
routeIdStringВозвращает идентификатор текущего маршрута, по которому маршрутизируется Exchange.
setHeader(name,type,exp)nullУстанавливает заголовок сообщения с заданным выражением (с возможным преобразованием в заданный тип).
setVariable(name,type,exp)nullУстанавливает переменную с заданным выражением (с возможным преобразованием в заданный тип).
stepIdStringВозвращает идентификатор текущего шага, по которому маршрутизируется Exchange. Возвращает null, если шагов нет.
throwException(type,msg)ExceptionПринудительно генерирует исключение указанного типа. Это позволяет имитировать ошибки на любом этапе маршрута без написания Java‑кода. По умолчанию используется IllegalArgumentException, если тип не указан (используйте полное имя класса).
type:name.fieldObjectПозволяет обратиться к типу или полю по его полному квалифицированному имени (Fully‑Qualified Name, FQN).
val(exp)ObjectВозвращает выражение как константное значение.
variable.keyObjectОбращается к переменной, сохранённой ранее в рамках текущего Exchange, по её ключу.
variableAs(key,type)<T>Выполняет поиск переменной по ключу и её преобразование в указанный тип данных.
variablesMapВсе переменные из текущего Exchange в виде java.util.Map.
variables.sizeintКоличество переменных Exchange.

Пример логирования с помощью компонента Logger

Во время маршрутизации вы можете использовать компонент Logger для записи в журнал, например:

- from:
uri: direct:email
steps:
- log:
message: "Sending welcome email to customer ${header.id} with status ${variable.level}"