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 메시지의 해당 키에 매핑됩니다.

  1. Camel 2.16.1: 단순 표현식인 경우 메시지 본문에서 가져옵니다.
  2. 메시지 헤더에서 '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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.