Grape

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

Компонент Grape (opens in a new tab) позволяет извлекать, загружать и управлять дополнительными jar-файлами во время CamelContextработы. На практике, компонент Camel Grape позволяет добавлять новые компоненты, форматы данных и бины CamelContextбез перезапуска маршрутизатора.

Grape options

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

Компонент Grape поддерживает 3 параметра, которые перечислены ниже.

lazyStartProducer (producer)

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

autowiredEnabled (advanced)

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: boolean

patchesRepository (advanced)

  • Реализация org.apache.camel.component.grape.PatchesRepository, по умолчанию: FilePatchesRepository.

  • По умолчанию:

  • Тип: PatchesRepository

Endpoint Options

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

grape:defaultCoordinates

Со следующими параметрами пути и запроса :

Path Parameters (1 parameters)

defaultCoordinates (producer)

  • Требуемые координаты Maven для использования по умолчанию при захвате, если тело сообщения пусто.

  • По умолчанию:

  • Тип: String

Query Parameters (1 parameters)

lazyStartProducer (producer (advanced))

  • Тип: Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: boolean

Message Headers

Компонент Grape поддерживает 1 заголовок(и) сообщения, которые перечислены ниже:

CamelGrapeCommand (producer)

Constant: GRAPE_COMMAND (opens in a new tab)

  • Команда, которую должна выполнить конечная точка Grape.

    Значения перечисления:

    • grab

    • listPatches

    • clearPatches

  • По умолчанию: grab

  • Тип: GrapeCommand

Setting up class loader

Для Grape требуется загрузчик классов Groovy с CamelContext. Вы можете включить загрузку классов Groovy в существующем контексте Camel с помощью GrapeComponent#grapeCamelContext()метода:

import static org.apache.camel.component.grape.GrapeComponent.grapeCamelContext;
...
CamelContext camelContext = grapeCamelContext(new DefaultCamelContext());

Вы также можете самостоятельно настроить загрузчик классов Groovy, используемый контекстом Camel:

camelContext.setApplicationContextClassLoader(new GroovyClassLoader(myClassLoader));

Например, следующий фрагмент загружает компонент Camel FTP:

from("direct:loadCamelFTP").
  to("grape:org.apache.camel/camel-ftp/2.15.2");

Вы также можете указать координаты Maven, отправив их в конечную точку в качестве тела обмена:

from("direct:loadCamelFTP").
  setBody().constant("org.apache.camel/camel-ftp/2.15.2").
  to("grape:defaultMavenCoordinates");

Adding the Grape component to the project

Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-grape</artifactId>
    <version>x.y.z</version>
    <!-- use the same version as your Camel core version -->
</dependency>

Default payload type

По умолчанию компонент Camel Grape работает со строковыми полезными данными:

producerTemplate.sendBody("grape:defaultMavenCoordinates", "org.apache.camel/camel-ftp/2.15.2");

Конечно, встроенный API преобразования типов (opens in a new tab) Camel может автоматически преобразовать типы данных. В примере ниже Camel автоматически преобразует двоичные данные в строку:

producerTemplate.sendBody("grape:defaultMavenCoordinates", "org.apache.camel/camel-ftp/2.15.2".getBytes());

Loading components at runtime

Чтобы загрузить новый компонент во время выполнения маршрутизатора, просто возьмите jar-файл, содержащий данный компонент:

ProducerTemplate template = camelContext.createProducerTemplate();
template.sendBody("grape:grape", "org.apache.camel/camel-stream/2.15.2");
template.sendBody("stream:out", "msg");

Loading processors bean at runtime

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

ProducerTemplate template = camelContext.createProducerTemplate();
template.sendBody("grape:grape", "com.example/my-business-processors/1.0");
int productId = 1;
int price = template.requestBody("bean:com.example.PricingBean?method=currentProductPrice", productId, int.class)

Loading deployed jars after Camel context restart

После загрузки нового jar-файла обычно требуется, чтобы Camel снова загрузил его после перезапуска CamelContext. Это вполне возможно, поскольку компонент Grape отслеживает установленные jar-файлы. Чтобы повторно загрузить установленные jar-файлы при запуске контекста, используйте GrapeEndpoint.loadPatches()метод в вашем маршруте:

import static org.apache.camel.component.grape.GrapeEndpoint.loadPatches;

...
camelContext.addRoutes(
  new RouteBuilder() {
    @Override
    public void configure() throws Exception {
      loadPatches(camelContext);

      from("direct:loadCamelFTP").
        to("grape:org.apache.camel/camel-ftp/2.15.2");
    }
  });

Managing the installed jars

Если вы хотите проверить, какие jar-файлы установлены в заданном каталоге CamelContext, отправьте сообщение на конечную точку Grape с CamelGrapeCommandзаголовком, установленным на GrapeCommand.listPatches:

from("netty-http:http://0.0.0.0:80/patches").
    setHeader(GrapeConstats.GRAPE_COMMAND, constant(CamelGrapeCommand.listPatches)).
    to("grape:list");

Подключение к маршруту, определенному выше, с помощью HTTP-клиента возвращает список jar-файлов, установленных компонентом Grape:

$ curl http://my-router.com/patches
grape:org.apache.camel/camel-ftp/2.15.2
grape:org.apache.camel/camel-jms/2.15.2

Если вы хотите удалить установленные jar-файлы, чтобы они не загружались снова после перезапуска контекста, используйте GrapeCommand.``clearPatchesкоманду:

from("netty-http:http://0.0.0.0:80/patches").
    setHeader(GrapeConstats.GRAPE_COMMAND, constant(CamelGrapeCommand.clearPatches)).
    setBody().constant("Installed patches have been deleted.");

Spring Boot Auto-Configuration

При использовании Grape с Spring Boot обязательно используйте следующую зависимость Maven для поддержки автоматической настройки:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-grape-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

Компонент поддерживает 4 опции, которые перечислены ниже.

camel.component.grape.autowired-enabled

  • Включено ли автоматическое связывание. Это используется для параметров автоматического связывания (параметр должен быть помечен как autowired) путём поиска в реестре экземпляра соответствующего типа, который затем настраивается в компоненте. Это может использоваться для автоматической настройки источников данных JDBC, фабрик JMS-подключений, клиентов AWS и т. д.

  • По умолчанию: true

  • Тип: Boolean

camel.component.grape.enabled

  • Включить ли автоматическую настройку компонента «Виноград»? По умолчанию эта функция включена.

  • По умолчанию:

  • Тип: Boolean

camel.component.grape.lazy-start-producer

  • Следует ли запускать производитель в режиме ленивого запуска (при первом сообщении). Запуск в режиме ленивого запуска позволяет разрешить запуск CamelContext и маршрутов в ситуациях, когда производитель может выйти из строя при запуске, что приведет к сбою запуска маршрута. Отложив запуск в режим ленивого запуска, можно обработать сбой запуска во время маршрутизации сообщений с помощью обработчиков ошибок маршрутизации Camel. Имейте в виду, что после обработки первого сообщения создание и запуск производителя могут занять некоторое время и увеличить общее время обработки.

  • По умолчанию: false

  • Тип: Boolean

camel.component.grape.patches-repository

  • Реализация org.apache.camel.component.grape.PatchesRepository, по умолчанию: FilePatchesRepository. Параметр имеет тип org.apache.camel.component.grape.PatchesRepository.

  • По умолчанию:

  • Тип: PatchesRepository