LDIF

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

Компонент LDIF позволяет выполнять обновления на сервере LDAP из содержимого тела LDIF.

Этот компонент использует базовый синтаксис URL для доступа к серверу. Он использует библиотеку Apache DS LDAP для обработки LDIF-файла. После обработки LDIF-файла тело ответа будет представлять собой список статусов успешности/неуспешности каждой записи.

* API Apache LDAP очень чувствителен к синтаксическим ошибкам LDIF. В случае сомнений обратитесь к модульным тестам, чтобы увидеть примеры каждого типа изменений.

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

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

URI format

ldif:ldapServerBean[?options]

Часть ldapServerBean URI ссылается на LdapConnection (opens in a new tab) . Его следует создавать на основе фабрики в точке использования, чтобы избежать тайм-аутов соединения. Компонент LDIF поддерживает только конечные точки-производители, что означает, что ldifURI не может присутствовать в fromначале маршрута.

Для настройки SSL обратитесь к camel-ldapкомпоненту, где есть пример настройки пользовательского экземпляра SocketFactory.

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

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

lazyStartProducer (producer)

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

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

  • Тип: boolean

autowiredEnabled (advanced)

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

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

  • Тип: boolean

Endpoint Options

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

ldif:ldapConnectionName

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

Path Parameters (1 parameters)

ldapConnectionName (producer)

  • Обязательно. Имя компонента LdapConnection, который необходимо извлечь из реестра. Обратите внимание, что это должно быть в области действия прототипа, чтобы избежать его совместного использования потоками или использования соединения, время ожидания которого истекло.

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

  • Тип: String

Query Parameters (1 parameters)

lazyStartProducer (producer (advanced))

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

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

  • Тип: boolean

Usage

Body types:

Тело документа может представлять собой URL-адрес LDIF-файла или встроенного LDIF-файла. Чтобы обозначить разницу между типами тела документа, встроенный LDIF-файл должен начинаться с:

version: 1

В противном случае компонент попытается проанализировать тело как URL.

Result

Результат возвращается в теле Out в виде ArrayList<java.lang.String>объекта. Он содержит либо successсообщение об исключении, либо сообщение об исключении для каждой записи LDIF.

LdapConnection

URI, ldif:ldapConnectionName, ссылается на компонент с идентификатором . ldapConnectionNameldapConnection можно настроить с помощью LdapConnectionConfigкомпонента. Обратите внимание, что область действия должна быть ограничена, prototypeчтобы избежать совместного использования соединения или перехвата устаревшего соединения.

Компонент LdapConnectionможет быть определен в Spring XML следующим образом:

<bean id="ldapConnectionOptions" class="org.apache.directory.ldap.client.api.LdapConnectionConfig">
  <property name="ldapHost" value="${ldap.host}"/>
  <property name="ldapPort" value="${ldap.port}"/>
  <property name="name" value="${ldap.username}"/>
  <property name="credentials" value="${ldap.password}"/>
  <property name="useSsl" value="false"/>
  <property name="useTls" value="false"/>
</bean>

<bean id="ldapConnectionFactory" class="org.apache.directory.ldap.client.api.DefaultLdapConnectionFactory">
  <constructor-arg index="0" ref="ldapConnectionOptions"/>
</bean>

<bean id="ldapConnection" factory-bean="ldapConnectionFactory" factory-method="newLdapConnection" scope="prototype"/>

Examples

В соответствии с конфигурацией Spring, представленной выше, пример кода ниже отправляет LDAP-запрос на поиск члена группы с помощью фильтра. Затем из ответа извлекается общее имя.

ProducerTemplate<Exchange> template = exchange.getContext().createProducerTemplate();

List<?> results = (Collection<?>) template.sendBody("ldif:ldapConnection, "LDiff goes here");

if (results.size() > 0) {
  // Check for no errors

  for (String result : results) {
    if ("success".equalTo(result)) {
      // LDIF entry success
    } else {
      // LDIF entry failure
    }
  }
}

Spring Boot Auto-Configuration

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

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

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

camel.component.ldif.autowired-enabled

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

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

  • Тип: Boolean

camel.component.ldif.enabled

  • Включить ли автоматическую настройку компонента ldif. По умолчанию эта опция включена.

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

  • Тип: Boolean

camel.component.ldif.lazy-start-producer

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

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

  • Тип: Boolean