JPA
Поддерживаются как производитель, так и потребитель
Компонент JPA позволяет вам хранить и извлекать Java-объекты из постоянного хранилища с использованием архитектуры Java Persistence Architecture (JPA) из EJB 3. JPA -- это стандартный интерфейсный уровень, который оборачивает продукты Object/Relational Mapping (ORM), такие как OpenJPA, Hibernate, TopLink и другие.
Пользователям Maven необходимо добавить следующую зависимость для pom.xmlэтого компонента:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jpa</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>URI format
<span style="color: rgb(0,0,0);">jpa:entityClassName[?options]</span>
Для отправки в endpoint entityClassName является необязательным. Если указан, он помогает конвертеру типов убедиться, что тело имеет правильный тип.
Для потребления entityClassName является обязательным.
Configuring Options
Компоненты настраиваются на двух отдельных уровнях:
-
component level
-
edpoint level
Configuring Component Options
На уровне компонента задаются основные и общие настройки, которые впоследствии наследуются endpoints. Это самый высокий уровень конфигурации.
Например, компонент может иметь настройки безопасности, учетные данные для аутентификации, URL-адреса для сетевых подключений и т. д.
Некоторые компоненты имеют всего несколько параметров, в то время как у других их может быть много. Поскольку компоненты обычно имеют предварительно настроенные значения по умолчанию, которые используются в большинстве случаев, вам может понадобиться настроить только несколько параметров компонента или вообще ничего не настраивать.
Компоненты можно настроить с использованием:
-
Component DSL.
-
Конфигурационного файла (application.properties, *.yaml files, etc).
-
Напрямую в Java code.
Configuring Endpoint Options
Обычно больше времени уходит на настройку endpoints, так как они обладают множеством параметров. Эти параметры позволяют настроить поведение endpoint в соответствии с вашими потребностями. Кроме того, параметры делятся на категории в зависимости от того, используется ли endpoint как потребитель (from), как производитель (to) или в обеих ролях.
Настройка endpoints чаще всего выполняется непосредственно в URI endpoint в виде параметров пути и запроса. Также вы можете использовать Endpoint DSL и DataFormat DSL как типобезопасный способ настройки endpoints и форматов данных в Java.
Хорошей практикой при настройке параметров является использование Property Placeholders.
Property placeholders предоставляют несколько преимуществ:
-
Помогают избежать использования жестко закодированных URL-адресов, номеров портов, конфиденциальной информации и других настроек.
-
Позволяют вынести конфигурацию за пределы кода.
-
Делают код более гибким и удобным для повторного использования.
Component properties
Consume Delete
-
Если значение true, сущность удаляется после её обработки; если значение false, сущность не удаляется.
-
По умолчанию: true
-
Тип: boolean
Consume Lock Entity
-
Определяет, следует ли устанавливать эксклюзивную блокировку на каждом бине сущности при обработке результатов опроса.
-
По умолчанию: true
-
Тип: boolean
Delete Handler
-
Использует пользовательский DeleteHandler для удаления строки после завершения обработки обмена потребителем.
-
По умолчанию:
-
Тип: DeleteHandler
Entity Type
-
Обязательное поле - Имя класса сущности.
-
По умолчанию:
-
Тип: Class
Join Transaction
-
Тип: Компонент camel-jpa по умолчанию присоединяется к транзакции. Вы можете использовать эту опцию, чтобы отключить это, например, если вы используете LOCAL_RESOURCE, и присоединение к транзакции не работает с вашим провайдером JPA. Эту опцию также можно установить глобально на JpaComponent, вместо того чтобы устанавливать её на всех endpoints.
-
По умолчанию: true
-
Тип: boolean
Lock Mode Type
-
Настраивает режим блокировки для потребителя.
Возможные значения:
-
READ
-
WRITE
-
OPTIMISTIC
-
OPTIMISTIC_FORCE_INCREMENT
-
PESSIMISTIC_READ
-
PESSIMISTIC_WRITE
-
PESSIMISTIC_FORCE_INCREMENT
-
NONE
-
-
По умолчанию: PESSIMISTIC_WRITE
-
Тип: LockModeType
Max Messages Per Poll
-
Целочисленное значение для определения максимального количества сообщений, собираемых за один опрос. По умолчанию максимум не установлен. Это может быть использовано для предотвращения опроса тысяч сообщений при запуске сервера. Установите значение 0 или отрицательное, чтобы отключить.
-
По умолчанию:
-
Тип: int
Maximum Results
-
Устанавливает максимальное количество результатов для извлечения в запросе.
-
По умолчанию: -1
-
Тип: int
Named Query
-
Использует именованный запрос.
-
По умолчанию:
-
Тип: String
Native Query
-
Использует пользовательский нативный запрос. Возможно, вы захотите использовать опцию resultClass также при использовании нативных запросов.
-
По умолчанию:
-
Тип: String
Persistence Unit
-
Тип: Обязательное поле - Единица сохранения JPA, используемая по умолчанию.
-
По умолчанию: camel
-
Тип: String
Pre Delete Handler
-
Использует пользовательский Pre-DeleteHandler для удаления строки после того, как потребитель прочитал сущность.
-
По умолчанию:
-
Тип: DeleteHandler
Query
-
Использует пользовательский запрос.
-
По умолчанию:
-
Тип: String
Result Class
-
Тип: Определяет тип возвращаемой полезной нагрузки (вызывается entityManager.createNativeQuery(nativeQuery, resultClass) вместо entityManager.createNativeQuery(nativeQuery)). Без этой опции вернется массив объектов. Имеет эффект только при использовании в сочетании с нативным запросом при потреблении данных.
-
По умолчанию:
-
Тип: Class
Send Empty Message When Idle
-
Если потребитель, работающий в режиме опроса, не обнаружил ни одного файла, вы можете включить эту опцию, чтобы отправлять пустое сообщение (без тела) вместо этого.
-
По умолчанию: false
-
Тип: boolean
Skip Locked Entity
-
Определяет, использовать ли NOWAIT при блокировке и пропускать сущность без уведомления.
-
По умолчанию: false
-
Тип: boolean
Transacted
-
Определяет, следует ли запускать потребителя в режиме транзакций, при котором все сообщения либо фиксируются, либо откатываются, когда вся партия обработана. Поведение по умолчанию (false) -- фиксирует все ранее успешно обработанные сообщения и откатывает только последнее сообщение, завершившееся ошибкой.
-
По умолчанию: false
-
Тип: boolean
Component scheduler properties
Backoff Error Threshold
-
Количество последовательных неудачных опросов (из-за ошибки), после которых должен начать действовать коэффициент понижения частоты опросов (backoffMultiplier).
-
По умолчанию:
-
Тип: int
Backoff Idle Threshold
-
Количество пустых опросов подряд, после которых должен начать действовать коэффициент понижения частоты опросов (backoffMultiplier).
-
По умолчанию:
-
Тип: int
Backoff Multiplier
-
Тип: Позволяет планируемому потребителю в режиме опроса снижать частоту опросов, если произошло несколько последовательных холостых опросов или ошибок. Множитель определяет количество опросов, которые будут пропущены перед следующей попыткой. При использовании этой опции также необходимо настроить параметры backoffIdleThreshold и/или backoffErrorThreshold.
-
По умолчанию:
-
Тип: int
Delay
-
Количество миллисекунд до следующего опроса.
-
По умолчанию: 500
-
Тип: long
Greedy
-
Если включен режим greedy, то ScheduledPollConsumer снова выполнится немедленно, если предыдущий опрос вернул 1 или больше сообщений.
-
По умолчанию: false
-
Тип: boolean
Initial Delay
-
Количество миллисекунд до начала первого опроса.
-
По умолчанию: 1000
-
Тип: long
Repeat Count
-
Устанавливает максимальный лимит количества срабатываний. Если вы установите значение 1, планировщик сработает только один раз. Если установить значение 5, он сработает пять раз. Значение ноль или отрицательное означает, что срабатывание будет происходить бесконечно.
-
По умолчанию: 0
-
Тип: long
Run Logging Level
-
Потребитель записывает в журнал строку начала/завершения при опросе. Эта опция позволяет настроить уровень логирования для этого.
Возможные значения:
-
TRACE
-
DEBUG
-
INFO
-
WARN
-
ERROR
-
OFF
-
-
По умолчанию: TRACE
-
Тип: LoggingLevel
Scheduled Executor Service
-
Позволяет настроить пользовательский/общий пул потоков для использования потребителем. По умолчанию у каждого потребителя есть собственный пул потоков с одним потоком.
-
По умолчанию:
-
Тип: ScheduledExecutorService
Scheduler
-
Для использования планировщика cron из компонента camel-spring или camel-quartz. Используйте значение spring или quartz для встроенного планировщика.
-
По умолчанию: none
-
Тип: Object
Scheduler Properties
-
Для настройки дополнительных свойств при использовании пользовательского планировщика или любого из планировщиков на основе Quartz или Spring.
-
По умолчанию:
-
Тип: Map
Start Scheduler
-
Определяет, должен ли планировщик автоматически запускаться. По умолчанию эта опция имеет значение true.
-
По умолчанию: true
-
Тип: boolean
Time Unit
-
Единица измерения времени для опций initialDelay и delay.
Возможные значения:
-
NANOSECONDS
-
MICROSECONDS
-
MILLISECONDS
-
SECONDS
-
MINUTES
-
HOURS
-
DAYS
-
-
По умолчанию: MILLISECONDS
-
Тип: TimeUnit
Use Fixed Delay
-
Управляет тем, будет ли использоваться фиксированная задержка или фиксированная частота.
-
По умолчанию: true
-
Тип: boolean
Component advanced properties
Bridge Error Handler
-
Предоставляет возможность связать потребителя с маршрутизатором Error Handler Camel. Это позволяет обрабатывать исключения (если возможно), возникающие при получении входящих сообщений потребителем Camel, в виде сообщений, передаваемых в маршрутизатор Error Handler.
Важно: Это возможно только в том случае, если сторонний компонент позволяет Camel получать уведомления о возникших исключениях. Некоторые компоненты обрабатывают исключения только внутренне, из-за чего использование bridgeErrorHandler становится невозможным. В некоторых случаях мы можем доработать компонент Camel, чтобы интегрировать его со сторонним компонентом и сделать такую возможность доступной в будущих выпусках. По умолчанию потребитель использует org.apache.camel.spi.ExceptionHandler для обработки исключений, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию: false
-
Тип: boolean
Entity Manager Properties
-
Дополнительные свойства для использования менеджером сущностей.
-
По умолчанию:
-
Тип: Map
Exception Handler
-
Позволяет потребителю использовать собственный ExceptionHandler.
Обратите внимание, что если включена опция bridgeErrorHandler, то эта настройка не используется. По умолчанию потребитель обрабатывает исключения, которые логируются с уровнем WARN или ERROR и игнорируются.
-
По умолчанию:
-
Тип: ExceptionHandler
Exchange Pattern
-
Тип: Определяет шаблон взаимодействия, который применяется, когда потребитель создает новый обмен (exchange).
Возможные значения:
-
InOnly
-
InOut
-
-
По умолчанию:
-
Тип: ExchangePattern
Parameters
-
Это сопоставление ключ/значение используется для построения параметров запроса. Ожидается, что оно будет иметь общий тип java.util.Map, где ключи -- это именованные параметры заданного JPA-запроса, а значения -- их соответствующие эффективные значения, которые вы хотите выбрать. При использовании для производителя (producer) в качестве значения параметра можно использовать простое выражение. Это позволяет извлекать значения параметров из тела сообщения, заголовка и т.д.
-
По умолчанию:
-
Тип: Map
Poll Strategy
-
Тип: Плагинируемая стратегия org.apache.camel.PollingConsumerPollingStrategy, позволяющая предоставить вашу собственную реализацию для управления обработкой ошибок, которые обычно возникают во время операции опроса до того, как Exchange был создан и маршрутизирован в Camel.
-
По умолчанию:
-
Тип: PollingConsumerPollStrategy
Shared Entity Manager
-
Определяет, следует ли использовать SharedEntityManager от Spring для потребителя/производителя. Обратите внимание, что в большинстве случаев joinTransaction должно быть установлено в false, так как это не EXTENDED EntityManager.
-
По умолчанию: false
-
Тип: boolean