Перейти к основному содержимому
Начало работы
Руководство администратора
How To статьи
Установка и настройка
Компоненты
Руководство пользователя

SQL

Общее описание

Компонент SQL позволяет работать с базами данных, используя запросы JDBC. Разница между этим компонентом и компонентом JDBC заключается в том, что в случае SQL запрос является свойством конечной точки и использует полезную нагрузку сообщения в качестве параметров, передаваемых запросу.

Блок SQL может использоваться в качестве:

  • блока отправителя

  • блока получателя.

Настройка блока

В данном разделе описаны параметры блока SQL, которые необходимо заполнить при настройке.

Базовые параметры блока SQL

Название в UI (имя атрибута в коде)ОбязательныйОписаниеЗначение по умолчаниюТип данных
QueryДаИсполняемый запрос. Этот запрос имеет приоритет над запросом, указанным в URI конечной точки.Текст
ConnectionЭтот параметр позволяет выбрать предсозданное подключение к БД или создать новое с помощью визарда Connection Manager.Список
Allow Named ParametersОпределяет следует ли разрешать использование именованных параметров в запросах.TrueЛогическое значение
Output ClassЗадает полный пакет и имя класса для использования в качестве преобразования, если значение Output Type – SelecTone.Строка
Output HeaderПозволяет сохранить результат запроса в заголовке, а не в тексте сообщения. По умолчанию значение outputHeader == null и результат запроса сохраняется в тексте сообщения, весь уже существующий контент в тексте сообщения сбрасывается. Если задан параметр Output Header, то это значение используется в качестве имени заголовка для хранения результата запроса, а исходное тело сообщения сохраняется.Строка
Output Type

Позволяет преобразовать выходные данные получателя или отправителя в SelectList как список карт соответствий (Map), или SelecTone как отдельный объект Java следующим образом:

  • Если запрос содержит только один столбец, то возвращается этот объект столбца JDBC. (например, SELECT COUNT( ) FROM PROJECT вернет объект Long.

  • Если запрос содержит более одного столбца, то он вернет отображение этого результата.

  • Если задан Output Class, то он преобразует результат запроса в объект Java bean, вызывая все сеттеры, соответствующие именам столбцов. Предполагается, что у вашего класса есть конструктор по умолчанию для создания экземпляра.

  • Если в результате запроса получено более одной строки, генерируется исключение Non-unique. StreamList передает результат запроса с помощью итератора. Это можно использовать вместе с блоком Split блоке в потоковом режиме для обработки результирующего набора в потоковом режиме.

Возможные значения

  • SelectList

  • SelectOne

  • StreamList

Список
Separator

Разделитель, который используется при определении значений параметров, которые находятся в теле сообщения, берется из текста сообщения (если тело сообщения имеет строковый тип.

Примечание:

Обратите внимание, что если вы используете именованные параметры, то вместо них используется тип Map. Значение по умолчанию - запятая.

,Строка
BatchВключает или отключает пакетный режим.FalseЛогическое значение
NoopОпределяет то, что результаты SQL-запроса будут игнорироваться и в качестве выходного сообщения для продолжения обработки будет использоваться входное сообщение.FalseЛогическое значение
Use Message Body For SqlОпределяет следует ли использовать текст сообщения в качестве SQL, а затем заголовки в качестве параметров. Если эта опция включена, то SQL в uri не используется. Обратите внимание, что параметры запроса в тексте сообщения представлены вопросительным знаком вместо символа #.FalseЛогическое значение
Backoff Error ThresholdКоличество последовательно полученных ошибок обработки, после которого включится режим пропуска запусков.Целое число
Backoff Idle ThresholdКоличество последовательных запросов, которые не привели к созданию или обработке данных. После достижения установленного количества включится режим пропуска запусков.Целое число
Backoff Multiplier

Позволяет обработчику по расписанию включать режим пропуска запусков при достижении числа последовательных пустых запросов/ошибок. Этот параметр определяет количество запусков, которые будут пропущены.

Когда используется этот параметр, также необходимо сконфигурировать backoffIdleThreshold и/или backoffErrorThreshold.

Целое число
DelayКоличество миллисекунд перед следующим запуском.500Длинное целое число
GreedyЕсли значение параметра установлено в True, то ScheduledPollConsumer запустится сразу же после того как предыдущий запуск обработал одно или несколько сообщений.FalseЛогическое значение
Initial DelayКоличество миллисекунд до первого запуска.1000Длинное целое число
Repeat CountОпределяет максимальное количество срабатываний. Таким образом, если вы установите значение 1, планировщик сработает только один раз. Если вы установите значение 5, он сработает только пять раз. Нулевое или отрицательное значение означает, что срабатывание происходит постоянно.0Целочисленное значение
Run Logging Level

Задает уровень логирования старта и финиша инициации потока.

Возможные значения:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • OFF

Список
Scheduled Executor ServiceПозволяет настроить пользовательский / общий пул потоков для получателя. По умолчанию у каждого получателя есть свой собственный однопоточный пул потоков.
SchedulerПозволяет использовать cron-планировщик из компонента camel-spring или camel-quartz. Используйте value spring или quartz для встроенного планировщика.None
Scheduler PropertiesПрименяется для настройки дополнительных свойств планировщикаСтрока
Start SchedulerОпределяет будет ли планировщик автоматически запускаться.TrueЛогическое значение
Time Unit

Задает единицы измерения времени для параметров Initial Delay и Delay.

Возможные значения:

  • Nanoseconds

  • Microseconds

  • Milliseconds

  • Seconds

  • Minutes

  • Hours

  • Days

MillisecondsСписок
Use Fixed DelayОпределяет, используется ли фиксированная задержка или фиксированная скорость.TrueЛогическое значение

Расширенные параметры блока SQL

Название в UI (имя атрибута в коде)ОбязательныйОписаниеЗначение по умолчаниюТип данных
Lazy Start Producer

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

Примечание:

При обработке первого сообщения создание и старт отправителя могут занять некоторое время и увеличить общее время обработки.

FalseЛогическое значение
Always Populate StatementЕсли опция включена, то всегда вызывается метод populateStatement, включая случаи, когда нет ожидаемых параметров, которые нужно подготовить. Если это значение равно false, то populateStatement вызывается только в том случае, если необходимо задать 1 или более ожидаемых параметров; например, это позволяет избежать чтения тела сообщения/заголовков для SQL-запросов без параметров.FalseЛогическое значение
Parameters CountЕсли значение этого параметра больше нуля, то это значение будет использоваться для замены параметров вместо запроса через JDBC metadata API. Это полезно, если поставщик JDBC не смог вернуть правильное количество параметров, тогда пользователь может переопределить его.Целочисленное значение
Placeholder

Задает символ, который будет заменяться в SQL-запросе.

Примечание:

Это простая операция String.replaceAll() и синтаксический анализ SQL не требуется (строки, заключенные в кавычки, также изменятся).

#Строка
Prepare Statement StrategyПозволяет плагину использовать пользовательскую стратегию org.apache.camel.component.sql.SqlPrepareStatementStrategy для управления подготовкой запроса и подготовленным заявлением.Строка
Row Mapper FactoryИнтерфейс, который определяет метод для сопоставления каждой строки результирующего набора (ResultSet) с соответствующим объектом Java.Строка
Template OptionsНастраивает Spring JdbcTemplate с помощью пар ключ/значение из карты (Map).Строка
Use PlaceholderОпределяет, следует ли использовать заполнитель и заменять все символы-заполнители предназначенными значениями в SQL-запросах.TrueЛогическое значение