95장. ElSQL 구성 요소

Camel 버전 2.16에서 사용 가능

elsql: 구성 요소는 ElSql 을 사용하여 SQL 쿼리를 정의하는 기존 SQL Component 의 확장입니다. 

이 구성 요소는 실제 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]

다음 형식 ?option=value&option=value&…​로 URI에 쿼리 옵션을 추가할 수 있습니다.

SQL 쿼리의 매개 변수는 elsql 매핑 파일에서 매개 변수 이름으로 지정되며 지정된 우선 순위에 따라 Camel 메시지의 해당 키에 매핑됩니다.

  1. Camel 2.16.1: 메시지 본문에서 Simple expression인 경우.
  2. 메시지 본문에서 메시지 헤더에서 'java.util.Map'3.

명명된 매개 변수를 확인할 수 없는 경우 예외가 발생합니다.

95.1. 옵션

ElSQL 구성 요소는 아래에 나열된 5 가지 옵션을 지원합니다.

이름설명기본값유형

databaseVendor (일반)

공급업체별 com.opengamma.elsql.ElSqlConfig를 사용하려면

 

ElSqlDatabaseVendor

데이터 소스(공용)

데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다.

 

DataSource

elSqlConfig (advanced)

구성된 특정 ElSqlConfig를 사용하려면 다음을 수행합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다.

 

ElSqlConfig

resourceUri (common)

사용할 elsql SQL 문이 포함된 리소스 파일입니다. 여러 리소스를 쉼표로 구분하여 지정할 수 있습니다. 리소스는 기본적으로 classpath에 로드되어 file:를 접두사로 사용하여 파일 시스템에서 로드할 수 있습니다. 구성 요소에 이 옵션을 설정하면 끝점에서 이 옵션을 구성할 필요가 없습니다.

 

문자열

resolveProperty Placeholders (advanced)

구성 요소가 시작 시 자체적으로 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders.

true

boolean

ElSQL 엔드포인트는 URI 구문을 사용하여 구성됩니다.

elsql:elsqlName:resourceUri

다음 경로 및 쿼리 매개변수를 사용합니다.

95.1.1. 경로 매개 변수(2 매개변수):

이름설명기본값유형

elsqlName

필수 필수 elsql 파일의 이름(elsql 파일의 NAMED)

 

문자열

resourceUri

사용할 elsql SQL 문이 포함된 리소스 파일입니다. 여러 리소스를 쉼표로 구분하여 지정할 수 있습니다. 리소스는 기본적으로 classpath에 로드되어 file:를 접두사로 사용하여 파일 시스템에서 로드할 수 있습니다. 구성 요소에 이 옵션을 설정하면 끝점에서 이 옵션을 구성할 필요가 없습니다.

 

문자열

95.1.2. 쿼리 매개변수(47 매개변수):

이름설명기본값유형

allowNamedParameters (공용)

쿼리에 명명된 매개 변수를 사용할 수 있는지 여부입니다.

true

boolean

databaseVendor (일반)

공급업체별 com.opengamma.elsql.ElSqlConfig를 사용하려면

 

ElSqlDatabaseVendor

데이터 소스(공용)

데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다.

 

DataSource

dataSourceRef (일반)

더 이상 데이터베이스와 통신하는 데 사용할 레지스트리에서 조회할 DataSource에 대한 참조를 설정합니다.

 

문자열

outputClass (common)

outputType=SelectOne 경우 변환으로 사용할 전체 패키지 및 클래스 이름을 지정합니다.

 

문자열

outputHeader (일반)

메시지 본문 대신 헤더에 쿼리 결과를 저장합니다. 기본적으로 outputHeader == null 및 쿼리 결과는 메시지 본문에 저장되며 메시지 본문의 기존 콘텐츠는 삭제됩니다. outputHeader가 설정된 경우 값은 쿼리 결과를 저장하기 위해 헤더의 이름으로 사용되고 원래 메시지 본문이 유지됩니다.

 

문자열

OutputType (일반)

다음과 같은 방식으로 SelectList를 List로 SelectList로 표시하거나, 쿼리에 단일 열이 있는 경우 JDBC 열 개체가 반환됩니다. (예: SELECT COUNT( COUNT) FROM PROJECT와 같은) 쿼리의 경우 쿼리에 하나 이상의 열이 있는 경우 해당 결과의 Map이 설정된 경우 해당 결과를 반환합니다. 그런 다음 쿼리 결과를 열 이름과 일치하는 모든 setter를 호출하여 Java 빈 오브젝트로 변환합니다. 이 쿼리에서 두 개 이상의 행을 생성하는 기본 생성자가 있다고 가정하고, 쿼리에서 두 개 이상의 행을 생성한 경우, Iterator를 사용하여 쿼리 결과를 throw합니다.StreamList는 Iterator를 사용하는 쿼리의 결과를 출력합니다. 스트리밍 모드에서 Splitter EIP와 함께 사용하여 ResultSet을 스트리밍 방식으로 처리할 수 있습니다.

SelectList

SqlOutputType

구분 기호 (공용)

명명된 매개 변수를 사용하는 경우 대신 Map 형식이 메시지 본문에서 가져오는 구분 기호입니다( body가 String 형식인 경우) 자리 표시자에 삽입할 때 사용할 구분 기호입니다.Notice if you use named parameters, then a Map type is used instead. 기본값은 comma입니다.

,

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가 성공적으로 처리된 경우 행을 처리된 상태로 표시합니다.After processing each row then this query can be executed, if the Exchange was processed successfully, for example to mark the row as processed. 쿼리에 매개 변수가 있을 수 있습니다.

 

문자열

onConsumeBatchComplete (consumer)

전체 배치를 처리한 후 이 쿼리를 대량 업데이트 행으로 실행할 수 있습니다.After processing the entire batch, this query can be executed to bulk update rows etc. 쿼리에 매개 변수가 있을 수 없습니다.

 

문자열

OnConsumeFailed (consumer)

각 행을 처리한 후 이 쿼리를 실행할 수 있습니다. 예를 들어 Exchange가 실패한 경우 행을 실패로 표시합니다.After processing each row then this query can be executed, if the Exchange failed, for example to mark the row as failed. 쿼리에 매개 변수가 있을 수 있습니다.

 

문자열

routeEmptyResultSet (consumer)

빈 결과를 다음 홉으로 보낼 수 있는지 여부를 설정합니다. 기본값은 false입니다. 그러면 빈 결과가 필터링됩니다.

false

boolean

sendEmptyMessageWhenIdle (consumer)

폴링 소비자가 파일을 폴링하지 않은 경우 이 옵션을 활성화하여 빈 메시지( 본문 없음)를 대신 보낼 수 있습니다.

false

boolean

거래 대상 (consumer)

트랜잭션을 활성화하거나 비활성화합니다. 그런 다음 Exchange 처리가 실패하면 소비자는 추가 교환 처리를 중단하여 롤백을 신속하게 발생시킵니다.

false

boolean

UseIterator (consumer)

결과 집합을 경로로 전달하는 방법을 설정합니다. 배달을 목록 또는 개별 개체로 지정합니다. 기본값은 true입니다.

true

boolean

예외 처리기 (consumer)

소비자가 사용자 지정 ExceptionHandler를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있는지 확인한 후 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 WARN 또는 ERROR 수준에서 기록되고 무시되는 예외를 처리합니다.

 

ExceptionHandler

exchangePattern (consumer)

소비자가 교환을 생성할 때 교환 패턴을 설정합니다.

 

ExchangePattern

pollStrategy (consumer)

플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Camel에서 Exchange를 생성하고 라우팅하기 전에 폴링 작업 중에 일반적으로 발생한 오류 처리를 제어하는 사용자 정의 구현을 제공할 수 있습니다.

 

PollingConsumerPoll Strategy

processingStrategy (consumer)

플러그인이 사용자 지정 org.apache.camel.component.sql.SqlProcessingStrategy를 사용하여 소비자가 rows/batch를 처리할 때 쿼리를 실행할 수 있도록 허용합니다.

 

SqlProcessingStrategy

배치 (producer)

배치 모드 활성화 또는 비활성화

false

boolean

noop (producer)

설정된 경우 는 SQL 쿼리의 결과를 무시하고 기존 IN 메시지를 처리 연속에 대한 OUT 메시지로 사용합니다.

false

boolean

useMessageBodyForSql (producer)

메시지 본문을 SQL로 사용한 다음 매개 변수에 대한 헤더를 사용할지 여부입니다. 이 옵션을 활성화하면 uri의 SQL이 사용되지 않습니다.

false

boolean

alwaysPopulateStatement (producer)

활성화된 경우 org.apache.camel.component.sql.SqlPrepareStatementStrategy의 populateStatement 메서드는 항상 호출되며, 준비된 매개변수가 없는 경우에도 호출됩니다. 이 값이 false인 경우 populateStatement는 1개 이상의 예상 매개변수가 설정된 경우에만 호출됩니다. 예를 들어 매개 변수가 없는 SQL 쿼리에 대한 메시지 본문/headers를 읽는 것을 방지할 수 있습니다.

false

boolean

parametersCount (producer)

0보다 큰 값을 설정하면 Camel은 JDBC 메타데이터 API를 통해 쿼리하는 대신 이 수의 매개변수를 사용하여 교체합니다. 이 기능은 JDBC 공급업체에서 올바른 매개변수 수를 반환할 수 없는 경우 사용자는 대신 재정의할 수 있습니다.

 

int

elSqlConfig (advanced)

구성된 특정 ElSqlConfig를 사용하려면 다음을 수행합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다.

 

ElSqlConfig

자리 표시자 (advanced)

SQL 쿼리에서 로 대체될 문자를 지정합니다.Specifies a character that will be replaced to in SQL query. 간단한 String.replaceAll() 작업이며 SQL 구문 분석과 관련이 없습니다(quoted 문자열도 변경됩니다).

#

문자열

prepareStatementStrategy (advanced)

플러그인에서 사용자 지정 org.apache.camel.component.sql.SqlPrepareStatementStrategy를 사용하여 쿼리 및 준비된 문의 준비를 제어할 수 있습니다.

 

SqlPrepareStatement Strategy

synchronous (advanced)

동기 처리를 엄격하게 사용해야 하는지 또는 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)

백오프Multipler를 시작하기 전에 발생해야 하는 후속 유휴 폴링 수입니다.

 

int

backoffMultiplier (scheduler)

예약된 폴링 소비자 백오프가 연속된 여러 개의 유휴/errors가 있는 경우 해당 행에 사용할 수 있습니다. multiplier는 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용하는 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다.

 

int

지연 (scheduler)

다음 폴링보다 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다.

500

long

greedy (scheduler)

greedy가 활성화된 경우 ScheduledPollConsumer는 이전 실행이 1개 이상의 메시지를 폴링하면 즉시 다시 실행됩니다.

false

boolean

initialDelay (scheduler)

첫 번째 폴링이 시작되기 전까지의 밀리초입니다. 60초(60초), 5m30초(5분 및 30초) 및 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다.

1000

long

runLoggingLevel (scheduler)

소비자는 폴링할 때 시작/완료 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다.

TRACE

LoggingLevel

scheduledExecutorService (scheduler)

소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자는 자체 스레드 스레드 풀이 있습니다.

 

ScheduledExecutor Service

스케줄러 (scheduler)

camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면

none

ScheduledPollConsumer Scheduler

스케줄러 속성 (scheduler)

사용자 지정 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다.

 

map

StartScheduler (scheduler)

스케줄러가 자동으로 시작되어야 하는지 여부입니다.

true

boolean

timeUnit (scheduler)

initialDelay 및 지연 옵션의 시간 단위입니다.

밀리초

TimeUnit

UseFixedDelay (scheduler)

고정 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 JDK의 ScheduledExecutorService를 참조하십시오.

true

boolean