Основные функции
Bercut ESB предоставляет поддержку языка Simple, который обеспечивает легкий доступ и управление данными и свойствами объекта Exchange.
В таблице ниже приведено описание основных функций Simple.
| Функция | Тип ответа | Описание |
|---|---|---|
bean(name.method) | Object | Вызов выражения bean с использованием языка Bean. При указании имени метода необходимо использовать точку в качестве разделителя. Также поддерживается синтаксис ?method=имя_метода, который используется компонентом Bean. Camel по умолчанию будет искать bean по заданному имени. Однако, если вам нужно сослаться на класс bean (например, для вызова статического метода), вы можете добавить префикс с типом, например bean:type:fqnClassName. |
bodyAs(type) | <T> | Преобразует тело в заданный тип, определяемый его именем класса. |
bodyOneLine | String | Преобразует тело в строку и удаляет все разрывы строк, чтобы результат был одной строкой. |
bodyType | Class | Класс тела сообщения. |
body | Object | Тело сообщения. |
convertTo(type) | <T> | Преобразует тело сообщения в указанный тип. |
convertTo(exp,type) | <T> | Преобразует выражение в указанный тип. |
exception | Throwable | Объект Exception, равен null, если исключение не установлено в Exchange. Будет выполнен откат и захват любых перехваченных исключений, сохраненных как свойство обмена (Exchange.EXCEPTION_CAUGHT). |
exception.message | String | Сообщение от объекта Exchange. |
exception.stacktrace | String | Трассировка стека от объекта Exchange. |
exchangeId | String | Идентификатор текущего Exchange. |
exchangeProperty.key | Object | Возвращает значение свойства Exchange с заданным ключом. Возвращает null, если свойство не существует. |
exchange | Exchange | Текущий объект Exchange. |
fromRouteId | String | Возвращает исходный идентификатор маршрута, где был создан этот Exchange. |
function(name,exp) | Object | Вызывает пользовательскую функцию с заданным именем, используя тело сообщения (или выражение) в качестве входного параметра. |
header.key | Object | Заголовок сообщения с заданным ключом. |
headerAs(key,type) | <T> | Заголовок сообщения с заданным ключом, преобразованный в заданный тип. |
headers.size | int | Количество заголовков. |
headers | Map | Все заголовки сообщения в виде java.util.Map. |
id | String | Идентификатор сообщения. |
kindOfType(exp) | String | Определяет тип значения (null, number, string, boolean, array, object). |
length() | int | Длина полезной нагрузки (количество байт) тела сообщения. |
length(exp) | int | Длина полезной нагрузки (количество байт) выражения. |
logExchange | String | Выгружает Exchange для целей журналирования (использует ExchangeFormatter для форматирования вывода). |
mandatoryBodyAs(type) | <T> | Преобразует тело сообщения в заданный тип. Если тело равно null, выбрасывается исключение. |
messageAs(type) | <T> | Преобразует сообщение в заданный тип. |
messageHistory | String | История сообщений текущего Exchange (как он был маршрутизирован). Это похоже на трассировку стека маршрута, которую обработчик ошибок записывает в журнал в случае необработанного исключения. |
messageHistory(false) | String | То же, что и messageHistory, но без деталей обмена (включает только трассировку стека маршрута). Это можно использовать, если вы не хотите регистрировать конфиденциальные данные из самого сообщения. |
messageTimestamp | long | Возвращает временную метку (timestamp) сообщения — количество миллисекунд, прошедших с эпохи Unix (1 января 1970 года, 00:00:00 UTC), когда сообщение было создано в исходной системе. Некоторые системы, такие как JMS, Kafka, AWS, имеют временную метку для полученного события/сообщения. Этот метод возвращает временную метку, если она существует. Временная метка сообщения и время создания Exchange отличаются. У Exchange всегда есть временная метка создания, которая является локальной временной меткой создания. Временная метка сообщения доступна только в некоторых компонентах, где получатель может извлечь временную метку из исходного события. Если сообщение не имеет временной метки, возвращается 0. |
originalBody | Object | Исходное входящее тело сообщения (доступно только если сконфигурирована настройка allowUseOriginalMessage=true). |
properties:key:default | String | Ищет заполнитель свойства с заданным ключом. Если ключ не существует или не имеет значения, может быть указано необязательное значение по умолчанию. |
propertiesExist:key | boolean | Проверяет, существует ли заполнитель свойства с заданным ключом. Результат можно инвертировать, добавив префикс ! к ключу. |
ref:key | Object | Для поиска bean в реестре по заданному ключу. |
routeGroup | String | Возвращает группу текущего маршрута, по которому маршрутизируется Exchange. Не все маршруты имеют назначенную группу, поэтому здесь может быть null. |
routeId | String | Возвращает идентификатор текущего маршрута, по которому маршрутизируется Exchange. |
setHeader(name,type,exp) | null | Устанавливает заголовок сообщения с заданным выражением (с возможным преобразованием в заданный тип). |
setVariable(name,type,exp) | null | Устанавливает переменную с заданным выражением (с возможным преобразованием в заданный тип). |
stepId | String | Возвращает идентификатор текущего шага, по которому маршрутизируется Exchange. Возвращает null, если шагов нет. |
throwException(type,msg) | Exception | Принудительно генерирует исключение указанного типа. Это позволяет имитировать ошибки на любом этапе маршрута без написания Java‑кода. По умолчанию используется IllegalArgumentException, если тип не указан (используйте полное имя класса). |
type:name.field | Object | Позволяет обратиться к типу или полю по его полному квалифицированному имени (Fully‑Qualified Name, FQN). |
val(exp) | Object | Возвращает выражение как константное значение. |
variable.key | Object | Обращается к переменной, сохранённой ранее в рамках текущего Exchange, по её ключу. |
variableAs(key,type) | <T> | Выполняет поиск переменной по ключу и её преобразование в указанный тип данных. |
variables | Map | Все переменные из текущего Exchange в виде java.util.Map. |
variables.size | int | Количество переменных Exchange. |
Пример логирования с помощью компонента Logger
Во время маршрутизации вы можете использовать компонент Logger для записи в журнал, например:
- from:
uri: direct:email
steps:
- log:
message: "Sending welcome email to customer ${header.id} with status ${variable.level}"