Class

Поддерживается только производитель

Компонент «Класс» привязывает бины к сообщениям Camel. Он работает так же, как компонент Bean , но вместо поиска бинов в реестре он создаёт бин на основе имени класса.

URI format

class:className[?options]

Где classNameнаходится полное имя класса для создания и использования в качестве компонента.

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

Компонент Class поддерживает 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

Конечная точка класса настраивается с использованием синтаксиса URI:

class: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

Usage

Вы просто используете компонент class так же, как компонент Bean (opens in a new tab) , но указывая полное имя класса. Например, чтобы использовать , MyFooBeanнеобходимо сделать следующее:

from("direct:start")
    .to("class:org.apache.camel.component.bean.MyFooBean")
    .to("mock:result");

Вы также можете указать, какой метод следует вызвать MyFooBean, например hello:

from("direct:start")
    .to("class:org.apache.camel.component.bean.MyFooBean?method=hello")
    .to("mock:result");

Examples

Setting properties on the created instance

В URI конечной точки можно указать свойства, которые необходимо установить для созданного экземпляра, например, если у него есть setPrefixметод:

from("direct:start")
    .to("class:org.apache.camel.component.bean.MyPrefixBean?bean.prefix=Bye")
    .to("mock:result");

Вы также можете использовать этот #синтаксис для ссылки на свойства, которые нужно искать в реестре.

from("direct:start")
    .to("class:org.apache.camel.component.bean.MyPrefixBean?bean.cool=#foo")
    .to("mock:result");

Который найдет компонент в реестре по идентификатору fooи вызовет setCoolметод для созданного экземпляра класса MyPrefixBean.

  • Тип: * Более подробную информацию см. в компоненте Bean (opens in a new tab) , так как компонент class работает во многом таким же образом.

Spring Boot Auto-Configuration

При использовании класса с 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