Bean
Поддерживается только производитель
Компонент Bean привязывает bean-компоненты к обменам сообщениями Camel.
URI format
bean:beanName[?options]
Где beanNameможет находиться любая строка, используемая для поиска компонента в реестре
Configuring Options
Компоненты Camel настраиваются на двух отдельных уровнях:
-
уровень компонентов
-
уровень конечной точки
Configuring Component Options
На уровне компонентов задаются общие и общие конфигурации, которые затем наследуются конечными точками. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевого подключения и т. д.
У некоторых компонентов всего несколько параметров, а у других -- много. Поскольку компоненты обычно имеют предустановленные значения по умолчанию, которые широко используются, зачастую вам может потребоваться настроить лишь несколько параметров компонента, а то и вовсе ни одного.
Вы можете настроить компоненты, используя:
-
Компонент DSL (opens in a new tab) .
-
в файле конфигурации (
application.propertiesфайлы*.yaml, и т.д.). -
непосредственно в коде Java.
Configuring Endpoint Options
Настройка конечных точек обычно занимает больше времени, поскольку у них есть множество параметров. Эти параметры помогают вам настроить функции конечной точки. Параметры также классифицируются по тому, используется ли конечная точка как потребитель ( от ), как производитель ( от ) или и то, и другое.
Конечные точки чаще всего настраиваются непосредственно в URI конечной точки в виде параметров пути и запроса . Вы также можете использовать Endpoint DSL (opens in a new tab) и DataFormat DSL (opens in a new tab) в качестве типобезопасного способа настройки конечных точек и форматов данных в Java.
Хорошей практикой при настройке параметров является использование заполнителей свойств (opens in a new tab) .
Заполнители свойств обеспечивают несколько преимуществ:
-
Они помогают предотвратить использование жестко запрограммированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Они позволяют вынести конфигурацию за пределы кода.
-
Они помогают коду стать более гибким и пригодным для повторного использования.
В следующих двух разделах перечислены все параметры, сначала для компонента, а затем для конечной точки.
Component Options
Компонент Bean поддерживает 4 параметра, которые перечислены ниже.
lazyStartProducer (producer)
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
scope (producer)
-
Область действия бина. При использовании области действия singleton (по умолчанию) бин создается или ищется только один раз и используется повторно в течение всего жизненного цикла конечной точки. Бин должен быть потокобезопасным в случае, если параллельные потоки вызывают его одновременно. При использовании области действия request бин создается или ищется один раз за запрос (обмен). Это можно использовать, если вы хотите сохранить состояние бина при обработке запроса и хотите вызывать один и тот же экземпляр бина несколько раз при обработке запроса. Бин не обязательно должен быть потокобезопасным, так как экземпляр вызывается только из одного запроса. При использовании области действия delegate бин будет искаться или создаваться при каждом вызове. Однако в случае поиска это делегируется реестру бинов, такому как Spring или CDI (если используется), который в зависимости от их конфигурации может действовать как синглтон или прототип области действия. поэтому при использовании прототипа это зависит от делегированного реестра.
Значения перечисления:
-
Singleton
-
Request
-
Prototype
-
-
По умолчанию: Singleton
-
Тип: BeanScope
autowiredEnabled (advanced)
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: boolean
beanInfoCacheSize (advanced)
-
Максимальный размер внутреннего кэша для интроспекции компонентов. Установка значения 0 или отрицательного значения отключит кэш.
-
По умолчанию: 1000
-
Тип: int
Endpoint Options
Конечная точка Bean настраивается с использованием синтаксиса URI:
bean:beanName
Со следующими параметрами пути и запроса :
Path Parameters (1 parameters)
beanName (common)
-
Обязательно Задает имя вызываемого компонента.
-
По умолчанию:
-
Тип: String
Query Parameters (4 parameters)
-
Тип: method (common)
-
Задает имя метода, вызываемого для компонента.
-
String
scope (common)
-
Область действия бина. При использовании области действия singleton (по умолчанию) бин создается или ищется только один раз и повторно используется в течение всего жизненного цикла конечной точки. Бин должен быть потокобезопасным в случае, если параллельные потоки вызывают бин в одно и то же время. При использовании области действия request бин создается или ищется один раз за запрос (обмен). Это можно использовать, если вы хотите сохранить состояние бина во время обработки запроса и хотите вызывать один и тот же экземпляр бина несколько раз во время обработки запроса. Бин не обязательно должен быть потокобезопасным, так как экземпляр вызывается только из одного запроса. При использовании области действия prototype бин будет искаться или создаваться при каждом вызове. Однако в случае поиска это делегируется реестру бинов, такому как Spring или CDI (если используется), который в зависимости от их конфигурации может действовать как синглтон или как область действия prototype. поэтому при использовании prototype это зависит от делегированного реестра.
Значения перечисления:
-
Singleton
-
Request
-
Prototype
-
-
По умолчанию: Singleton
-
Тип: BeanScope
lazyStartProducer (producer (advanced))
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
По умолчанию: false
-
Тип: boolean
parameters (advanced)
-
Используется для настройки дополнительных свойств компонента. Это многозначный параметр с префиксом: bean.
-
По умолчанию:
-
Тип: Map
Examples
Bean : конечная точка не может быть определена как вход для маршрута, т. е. вы не можете потреблять из нее данные, вы можете только направить данные из некоторой входящей конечной точки сообщения в конечную точку bean-компонента в качестве выхода, например, прямую конечную точку в качестве входа.
Предположим, у вас есть следующий класс POJO, который будет использоваться в Camel:
package com.foo;
public class MyBean {
public String saySomething(String input) {
return "Hello " + input;
}
}Затем компонент можно вызвать в маршруте Camel, используя полное имя класса:
- Java
from("direct:hello")
.to("bean:com.foo.MyBean");- XML
<route> <from uri="direct:hello"/> <to uri="bean:com.foo.MyBean"/> </route>Происходит следующее: когда обмен направляется в MyBean, Camel использует привязку Bean для вызова bean-компонента, в данном случае метода saySomething , преобразуя Exchangeтело in в Stringтип и снова сохраняя вывод метода обратно в Exchange.
- Тип: * Компонент bean также может вызывать bean-компонент по идентификатору bean-компонента , выполняя поиск bean-компонента в реестре (opens in a new tab) вместо использования имени класса.
Java DSL specific bean syntax
Java DSL поставляется с синтаксическим сахаром для компонента Bean (opens in a new tab) . Вместо явного указания bean-компонента как конечной точки (например, to("bean:beanName")), можно использовать следующий синтаксис:
// Send a message to the bean endpoint
// and invoke method using Bean Binding.
from("direct:start").bean("beanName");
// Send a message to the bean endpoint
// and invoke given method.
from("direct:start").bean("beanName", "methodName");Вместо того, чтобы передавать имя ссылки на компонент (чтобы Camel искал его в реестре (opens in a new tab) ), вы можете указать сам компонент:
// Send a message to the given bean instance.
from("direct:start").bean(new ExampleBean());
// Explicit selection of bean method to be invoked.
from("direct:start").bean(new ExampleBean(), "methodName");
// Camel will create the instance of bean and cache it for you.
from("direct:start").bean(ExampleBean.class);Этот бин может быть лямбдой, если вы приведете лямбду к типу@FunctionalInterface
@FunctionalInterface
public interface ExampleInterface() {
@Handler String methodName();
}
from("direct:start")
.bean((ExampleInterface) () -> ""))Bean Binding
Механизм привязки компонентов (opens in a new tab) определяет, как выбираются вызываемые методы (если они не указаны явно в параметре метода ) и как формируются значения параметров из сообщения. Эти механизмы используются во всех механизмах интеграции компонентов (opens in a new tab) в Camel.
См. также связанный язык Bean (opens in a new tab) .
Spring Boot Auto-Configuration
При использовании bean-компонента с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-bean-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>Компонент поддерживает 14 опций, которые перечислены ниже.
camel.component.bean.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.bean.bean-info-cache-size
-
Максимальный размер внутреннего кэша для интроспекции компонентов. Установка значения 0 или отрицательного значения отключит кэш.
-
По умолчанию: 1000
-
Тип: Integer
camel.component.bean.enabled
-
Включить ли автоматическую настройку компонента Bean. По умолчанию эта функция включена.
-
По умолчанию:
-
Тип: Boolean
-
Тип: camel.component.bean.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
false
-
Boolean
camel.component.bean.scope
-
Область действия бина. При использовании области действия singleton (по умолчанию) бин создается или ищется только один раз и используется повторно в течение всего жизненного цикла конечной точки. Бин должен быть потокобезопасным в случае, если параллельные потоки вызывают его одновременно. При использовании области действия request бин создается или ищется один раз за запрос (обмен). Это можно использовать, если вы хотите сохранить состояние бина при обработке запроса и хотите вызывать один и тот же экземпляр бина несколько раз при обработке запроса. Бин не обязательно должен быть потокобезопасным, так как экземпляр вызывается только из одного запроса. При использовании области действия delegate бин будет искаться или создаваться при каждом вызове. Однако в случае поиска это делегируется реестру бинов, такому как Spring или CDI (если используется), который в зависимости от их конфигурации может действовать как синглтон или прототип области действия. поэтому при использовании прототипа это зависит от делегированного реестра.
-
По умолчанию: singleton
-
Тип: BeanScope
camel.component.class.autowired-enabled
-
Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.
-
По умолчанию: true
-
Тип: Boolean
camel.component.class.bean-info-cache-size
-
Максимальный размер внутреннего кэша для интроспекции компонентов. Установка значения 0 или отрицательного значения отключит кэш.
-
По умолчанию: 1000
-
Тип: Integer
camel.component.class.enabled
-
Включить ли автоматическую настройку компонента класса. По умолчанию эта опция включена.
-
По умолчанию:
-
Тип: Boolean
-
Тип: camel.component.class.lazy-start-producer
-
Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.
-
false
-
Boolean
camel.component.class.scope
-
Область действия бина. При использовании области действия singleton (по умолчанию) бин создается или ищется только один раз и используется повторно в течение всего жизненного цикла конечной точки. Бин должен быть потокобезопасным в случае, если параллельные потоки вызывают его одновременно. При использовании области действия request бин создается или ищется один раз за запрос (обмен). Это можно использовать, если вы хотите сохранить состояние бина при обработке запроса и хотите вызывать один и тот же экземпляр бина несколько раз при обработке запроса. Бин не обязательно должен быть потокобезопасным, так как экземпляр вызывается только из одного запроса. При использовании области действия delegate бин будет искаться или создаваться при каждом вызове. Однако в случае поиска это делегируется реестру бинов, такому как Spring или CDI (если используется), который в зависимости от их конфигурации может действовать как синглтон или прототип области действия. поэтому при использовании прототипа это зависит от делегированного реестра.
-
По умолчанию: singleton
-
Тип: BeanScope
camel.language.bean.enabled
-
Включить ли автоматическую настройку языка компонента. По умолчанию эта функция включена.
-
По умолчанию:
-
Тип: Boolean
-
Тип: camel.language.bean.scope
-
Область действия бина. При использовании области действия singleton (по умолчанию) бин создается или ищется только один раз и используется повторно в течение всего жизненного цикла конечной точки. Бин должен быть потокобезопасным в случае, если параллельные потоки вызывают бин в одно и то же время. При использовании области действия request бин создается или ищется один раз за запрос (обмен). Это можно использовать, если вы хотите сохранить состояние бина во время обработки запроса и хотите вызывать один и тот же экземпляр бина несколько раз во время обработки запроса. Бин не обязательно должен быть потокобезопасным, так как экземпляр вызывается только из одного запроса. При использовании области действия prototype бин будет искаться или создаваться при каждом вызове. Однако в случае поиска это делегируется реестру бинов, такому как Spring или CDI (если используется), который в зависимости от их конфигурации может действовать как синглтон или как область действия prototype. Таким образом, при использовании области действия prototype это зависит от реализации реестра бинов.
-
Singleton
-
String
camel.language.bean.trim
-
Следует ли обрезать значение, чтобы удалить начальные и конечные пробелы, а также переносы строк.
-
По умолчанию: true
-
Тип: Boolean
camel.language.bean.validate
-
Проверять, имеет ли компонент настроенный метод.
-
По умолчанию: true
-
Тип: Boolean