96장. ElSQL 구성 요소
Camel 버전 2.16에서 사용 가능
elsql: 구성 요소는 ElSql 을 사용하여 SQL 쿼리 를 정의하는 기존 SQL 구성 요소의 확장입니다.
이 구성 요소는 실제 SQL 처리를 위해 백그라운드에서 Spring -jdbc
를 사용합니다.
이 구성 요소는 트랜잭션 클라이언트로 사용할 수 있습니다.
Maven 사용자는 이 구성 요소에 대해 pom.xml
에 다음 종속성을 추가해야 합니다.
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-elsql</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
SQL 구성 요소는 다음 끝점 URI 표기법을 사용합니다.
sql:elSqlName:resourceUri[?options]
URI에 쿼리 옵션을 추가할 수 있습니다. ?option=value&option=value&…
SQL 쿼리의 매개변수는 elsql 매핑 파일에서 이름이 지정된 매개변수이며 지정된 우선 순위에서 Camel 메시지의 해당 키에 매핑됩니다.
- Camel 2.16.1: 단순 표현식인 경우 메시지 본문에서 가져옵니다.
- 메시지 헤더에서 'java.util.Map'3인 경우 메시지 본문에서
명명된 매개 변수를 확인할 수 없는 경우 예외가 발생합니다.
96.1. 옵션
ElSQL 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
databaseVendor (공용) | 벤더별 com.opengamma.elsql.ElSqlConfig 사용 | ElSqlDatabaseVendor | |
데이터 소스 (공용) | 데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다. | DataSource | |
elSqlConfig (advanced) | 구성된 특정 ElSqlConfig를 사용하려면 다음을 수행합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다. | ElSqlConfig | |
resourceUri (공용) | 사용할 elsql SQL 문을 포함하는 리소스 파일입니다. 여러 리소스를 쉼표로 구분할 수 있습니다. 리소스는 기본적으로 classpath에 로드되며 file: 접두사를 추가하여 파일 시스템에서 로드할 수 있습니다. 이 옵션을 구성 요소에서 설정할 수 있으며 엔드포인트에서 이 옵션을 구성할 필요가 없습니다. | 문자열 | |
resolveProperty Placeholders (advanced) | 구성 요소 시작 시 속성 자리 표시자를 자체적으로 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다. | true | boolean |
ElSQL 끝점은 URI 구문을 사용하여 구성됩니다.
elsql:elsqlName:resourceUri
다음 경로 및 쿼리 매개변수를 사용합니다.
96.1.1. 경로 매개변수 (2 매개변수):
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
elsqlName | required 사용할 elsql의 이름입니다(elsql 파일의 NAMED임) | 문자열 | |
resourceUri | 사용할 elsql SQL 문을 포함하는 리소스 파일입니다. 여러 리소스를 쉼표로 구분할 수 있습니다. 리소스는 기본적으로 classpath에 로드되며 file: 접두사를 추가하여 파일 시스템에서 로드할 수 있습니다. 이 옵션을 구성 요소에서 설정할 수 있으며 엔드포인트에서 이 옵션을 구성할 필요가 없습니다. | 문자열 |
96.1.2. 쿼리 매개변수(47 매개변수):
이름 | 설명 | 기본 | 유형 |
---|---|---|---|
allowNamedParameters (공용) | 쿼리에서 명명된 매개 변수를 사용할 수 있는지 여부입니다. | true | boolean |
databaseVendor (공용) | 벤더별 com.opengamma.elsql.ElSqlConfig 사용 | ElSqlDatabaseVendor | |
데이터 소스 (공용) | 데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다. | DataSource | |
dataSourceRef (공용) | 더 이상 사용되지 않는 데이터베이스 통신에 사용할 레지스트리에서 조회할 DataSource에 대한 참조를 설정합니다. | 문자열 | |
outputClass (공용) | outputType=SelectOne인 경우 변환으로 사용할 전체 패키지 및 클래스 이름을 지정합니다. | 문자열 | |
outputHeader (공용) | 메시지 본문 대신 쿼리 결과를 헤더에 저장합니다. 기본적으로 outputHeader == null 및 쿼리 결과는 메시지 본문에 저장되고 메시지 본문의 기존 콘텐츠는 삭제됩니다. outputHeader가 설정된 경우 값은 쿼리 결과를 저장하기 위해 헤더의 이름으로 사용되며 원래 메시지 본문은 유지됩니다. | 문자열 | |
OutputType (common) | 소비자 또는 생산자의 출력을 Map 목록으로 SelectList 또는 SelectOne을 단일 Java 오브젝트로 만듭니다.a) 쿼리에 단일 열만 있는 경우 JDBC Column 개체가 반환됩니다. (예: SELECT COUNT( ) FROM PROJECT는 Long object.b) Long object.b를 반환합니다. 그런 다음 열 이름과 일치하는 집합의 모든 집합을 호출하여 쿼리 결과를 Java 8080 개체로 변환합니다. 클래스에.d를 사용하여 인스턴스를 생성하는 기본 생성자가 있다고 가정합니다. 쿼리가 두 개 이상의 행이 생성된 경우 Iterator를 사용하여 쿼리 결과를 스트리밍합니다. 스트리밍 모드에서 Splitter EIP와 함께 사용하여 스트리밍 방식으로 ResultSet을 처리할 수 있습니다. | SelectList | SqlOutputType |
구분 기호 (일반) | 매개 변수 값이 메시지 본문에서 가져올 때 사용할 구분 기호(body가 문자열 유형인 경우), # placeholders.Notice에 삽입할 때 사용할 구분 기호는 이름이 지정된 매개 변수를 사용하는 경우 대신 Map 유형이 사용됩니다. 기본값은 쉼표입니다. | , | char |
breakBatchOnConsumeFail (consumer) | onConsume가 실패한 경우 일괄 처리를 중단할지 여부를 설정합니다. | false | boolean |
bridgeErrorHandler (consumer) | Camel 라우팅 오류 처리기에 소비자를 브리징할 수 있습니다. 즉, 소비자가 들어오는 메시지를 선택하려고 하는 동안 발생한 모든 예외가 이제 메시지로 처리되고 라우팅 오류 처리기에서 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.ExceptionHandler를 사용하여 WARN 또는 ERROR 수준에서 기록되고 무시됩니다. | false | boolean |
expectedUpdateCount (consumer) | onConsume를 사용할 때 검증할 예상 업데이트 수를 설정합니다. | -1 | int |
maxMessagesPerPoll (consumer) | 폴링할 최대 메시지 수를 설정합니다. | int | |
onConsume (Consumer) | 각 행을 처리한 후 예를 들어 Exchange가 성공적으로 처리된 경우 행을 처리된 것으로 표시하는 경우 이 쿼리를 실행할 수 있습니다. 쿼리에 매개 변수가 있을 수 있습니다. | 문자열 | |
onConsumeBatchComplete (consumer) | 전체 일괄 처리를 처리한 후 이 쿼리를 실행하여 대량 업데이트 행 등을 실행할 수 있습니다.After processing the entire batch, this query can be executed to bulk update rows etc. 쿼리에 매개 변수가 있을 수 없습니다. | 문자열 | |
onConsumeFailed (consumer) | 각 행을 처리한 후 이 쿼리를 실행하면 Exchange가 실패한 경우 행을 실패로 표시하는 등 이 쿼리를 실행할 수 있습니다. 쿼리에 매개 변수가 있을 수 있습니다. | 문자열 | |
routeEmptyResultSet (consumer) | 빈 결과 집합을 다음 홉으로 보낼 수 있는지 여부를 설정합니다. 기본값은 false입니다. 빈 결과가 필터링됩니다. | false | boolean |
sendEmptyMessageWhenIdle (consumer) | 폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 대신 빈 메시지(본체 없음)를 보낼 수 있습니다. | false | boolean |
거래 (Consumer) | 트랜잭션을 활성화하거나 비활성화합니다. 활성화된 경우 교환 처리가 실패한 경우 소비자는 추가 교환을 처리하여 롤백을 신속하게 발생시킵니다. | false | boolean |
UseIterator (consumer) | 결과 집합을 경로로 전달하는 방법을 설정합니다. 전달을 목록 또는 개별 오브젝트로 나타냅니다. 기본값은 true입니다. | true | boolean |
exceptionHandler (consumer) | 사용자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있으면 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시됩니다. | ExceptionHandler | |
exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 교환이 생성되고 Camel에서 라우팅되기 전에 일반적으로 폴링 작업 중에 발생한 오류 처리를 제어하기 위해 사용자 정의 구현을 제공할 수 있습니다. | PollingConsumerPoll Strategy | |
processingStrategy (consumer) | 사용자가 행/배치를 처리할 때 사용자 지정 org.apache.camel.component.sql.SqlProcessingStrategy를 사용하여 쿼리를 실행할 수 있습니다. | SqlProcessingStrategy | |
일괄 처리 (producer) | 일괄 모드 활성화 또는 비활성화 | false | boolean |
noop (producer) | 설정된 경우 는 SQL 쿼리의 결과를 무시하고 기존 IN 메시지를 처리 연속으로 OUT 메시지로 사용합니다. | false | boolean |
useMessageBodyForSql (producer) | 메시지 본문을 SQL로 사용한 다음 매개 변수에 대한 헤더를 사용할지 여부입니다. 이 옵션을 활성화하면 uri의 SQL이 사용되지 않습니다. | false | boolean |
alwaysPopulateStatement (advanced) | 활성화하면 org.apache.camel.component.sql.SqlPrepareStatementStrategy의 populateStatement 메서드가 항상 호출됩니다. 이 값이 false인 경우 populateStatement는 1개 이상의 예상 매개 변수가 있는 경우에만 호출됩니다. 예를 들어 매개 변수가 없는 SQL 쿼리에 대한 메시지 본문/headers를 읽는 것을 방지할 수 있습니다. | false | boolean |
elSqlConfig (advanced) | 구성된 특정 ElSqlConfig를 사용하려면 다음을 수행합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다. | ElSqlConfig | |
parametersCount (advanced) | 0보다 큰 경우 Camel은 JDBC 메타데이터 API를 통해 쿼리하는 대신 이 매개변수 값을 사용하여 교체합니다. 이는 JDBC 벤더가 올바른 매개변수 수를 반환할 수 없는 경우 유용합니다. 대신 사용자가 재정의할 수 있습니다. | int | |
자리 표시자 (고급) | SQL 쿼리에서 대체될 문자를 지정합니다. 간단한 String.replaceAll() 작업이며 SQL 구문 분석과 관련이 없습니다(quoted 문자열도 변경되지 않음). | # | 문자열 |
prepareStatementStrategy (advanced) | 사용자 지정 org.apache.camel.component.sql.SqlPrepareStatementStrategy를 사용하여 쿼리 및 준비 문의 준비를 제어할 수 있습니다. | SqlPrepareStatement Strategy | |
동기 (고급) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리를 사용할 수 있는지 여부를 설정합니다(지원되는 경우). | false | boolean |
templateOptions (advanced) | 맵의 키/값으로 Spring JdbcTemplate 구성 | map | |
usePlaceholder (advanced) | 자리 표시자를 사용하고 모든 자리 표시자 문자를 SQL 쿼리의 기호로 교체할지 여부를 설정합니다.Sets whether to use placeholder and replace all placeholder characters with sign in the SQL queries. | true | boolean |
backoffErrorThreshold (scheduler) | 백오프Multipler를 시작하기 전에 수행해야 하는 후속 오류 폴링(일부 오류로 인해 실패)의 수입니다. | int | |
backoffIdleThreshold (scheduler) | backoffMultipler가 시작되기 전에 수행해야 하는 후속 유휴 폴링의 수입니다. | int | |
backoffMultiplier (scheduler) | 행에 후속 유휴/errors가 있는 경우 예약된 폴링 소비자 백오프를 허용하려면 다음을 수행합니다. 그러면 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션이 사용 중인 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
지연 (scheduler) | 다음 폴링 전의 밀리초입니다. 60초(60초), 5m30s(5분 및 30초) 및 1h(1시간)를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
greedy (scheduler) | greedy가 활성화된 경우 이전 실행이 1개 이상의 메시지를 폴링하면 ScheduledPollConsumer가 즉시 다시 실행됩니다. | false | boolean |
initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전의 밀리초입니다. 60초(60초), 5m30s(5분 및 30초) 및 1h(1시간)를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
runLoggingLevel (scheduler) | 소비자는 폴링 시 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자에는 자체 단일 스레드 스레드 풀이 있습니다.By default, each consumer has its own single threaded thread pool. | ScheduledExecutor 서비스 | |
scheduler (scheduler) | camel-spring 또는 camel-quartz2 구성 요소의 cron 스케줄러 사용 | none | ScheduledPollConsumer Scheduler |
schedulerProperties (scheduler) | 사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
startScheduler (scheduler) | 스케줄러를 자동으로 시작해야 하는지 여부입니다. | true | boolean |
timeUnit (scheduler) | 초기 지연 및 지연 옵션의 시간 단위입니다. | 밀리초 | TimeUnit |
useFixedDelay (scheduler) | 고정된 지연 또는 고정 속도가 사용되는지 여부를 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오. | true | boolean |