95장. ElSQL Component
Camel 버전 2.16에서 사용 가능
elsql: 구성 요소는 ElSql 을 사용하여 SQL 쿼리를 정의하는 기존 SQL 구성 요소의 확장입니다.
이 구성 요소는 실제 SQL 처리를 위해 뒤따르는 spring-jdbc
를 사용합니다.
이 구성 요소는 Transactional Client 로 사용될 수 있습니다.
Maven 사용자는 이 구성 요소의 pom.xml
에 다음 종속성을 추가해야 합니다.
SQL 구성 요소는 다음 끝점 URI 표기법을 사용합니다.
sql:elSqlName:resourceUri[?options]
sql:elSqlName:resourceUri[?options]
?option=value&option=value&… 형식의 URI에 쿼리 옵션을
추가할 수 있습니다.
SQL 쿼리에 대한 매개변수는 elsql 매핑 파일에서 매개변수 이름이 지정되며, 지정된 우선 순위에 따라 Camel 메시지에서 해당 키에 매핑됩니다.
- Camel 2.16.1: 메시지 본문에서 간단한 표현인 경우.
- 메시지 헤더에서 'java.util.Map'3.인 경우 메시지 본문에서
named 매개변수를 확인할 수 없는 경우 예외가 발생합니다.
95.1. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
ElSQL 구성 요소는 아래에 나열된 5가지 옵션을 지원합니다.
이름 | 설명 | Default | 유형 |
---|---|---|---|
databaseVendor (common) | 벤더별 com.opengamma.elsql.ElSqlConfig를 사용하려면 | ElSqlDatabaseVendor | |
데이터 소스 (공용) | 데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다. | DataSource | |
elSqlConfig (advanced) | 구성된 특정 ElSqlConfig를 사용합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다. | ElSqlConfig | |
resourceUri (공용) | 사용할 elsql SQL 문을 포함하는 리소스 파일입니다. 쉼표로 구분된 여러 리소스를 지정할 수 있습니다. 리소스는 기본적으로 classpath에 로드되므로 file: 앞에 파일 시스템에서 로드할 수 있습니다. 구성 요소에서 이 옵션을 설정할 수 있으며 끝점에서 이 옵션을 구성할 필요가 없습니다. | 문자열 | |
resolvePropertyECDHEholders (advanced) | 구성 요소가 시작할 때 속성 자리 표시자를 확인해야 하는지 여부입니다. String 유형의 속성만 속성 자리 표시자를 사용할 수 있습니다.Only properties which are of String type can use property placeholders. | true | boolean |
ElSQL 끝점은 URI 구문을 사용하여 구성됩니다.
elsql:elsqlName:resourceUri
elsql:elsqlName:resourceUri
다음 경로 및 쿼리 매개변수를 사용합니다.
95.1.1. 경로 매개변수 (2 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
이름 | 설명 | Default | 유형 |
---|---|---|---|
elsqlName | 필수: 사용할 elsql의 이름(elsql 파일에서 NAMED) | 문자열 | |
resourceUri | 사용할 elsql SQL 문을 포함하는 리소스 파일입니다. 쉼표로 구분된 여러 리소스를 지정할 수 있습니다. 리소스는 기본적으로 classpath에 로드되므로 file: 앞에 파일 시스템에서 로드할 수 있습니다. 구성 요소에서 이 옵션을 설정할 수 있으며 끝점에서 이 옵션을 구성할 필요가 없습니다. | 문자열 |
95.1.2. 쿼리 매개변수 (47 매개변수): 링크 복사링크가 클립보드에 복사되었습니다!
이름 | 설명 | Default | 유형 |
---|---|---|---|
allowNamedParameters (common) | 쿼리에 이름이 지정된 매개변수를 사용할 수 있는지 여부입니다. | true | boolean |
databaseVendor (common) | 벤더별 com.opengamma.elsql.ElSqlConfig를 사용하려면 | ElSqlDatabaseVendor | |
데이터 소스 (공용) | 데이터베이스와 통신하는 데 사용할 DataSource를 설정합니다. | DataSource | |
dataSourceRef (common) | 더 이상 사용되지 않는 경우 데이터베이스와 통신하는 데 사용할 DataSource에서 조회할 참조를 설정합니다. | 문자열 | |
outputClass (공용) | outputType=SelectOne 때 변환으로 사용할 전체 패키지 및 클래스 이름을 지정합니다. | 문자열 | |
outputHeader (공용) | 메시지 본문이 아닌 헤더에 쿼리 결과를 저장합니다. 기본적으로 outputHeader == null 및 쿼리 결과는 메시지 본문에 저장되고 메시지 본문의 기존 콘텐츠가 삭제됩니다. outputHeader를 설정하면 쿼리 결과를 저장하기 위해 헤더의 이름으로 값이 사용되며 원래 메시지 본문이 유지됩니다. | 문자열 | |
OutputType (공용) | 다음과 같은 방법으로 쿼리에 단일 열만 있는 경우 (예: COUNT( ) FROM PROJECT) 쿼리에 Long object.b가 반환되면 쿼리에서 해당 결과의 맵을 반환합니다.c는 다음과 같은 방식으로 단일 Java 개체로 SelectOne을 출력합니다. 그런 다음 열 이름과 일치하는 모든 set0:0 개체를 호출하여 쿼리 결과를 JavaBean 개체로 변환합니다. This will assume your class has a default constructor to create instance with.d) 쿼리 결과를 두 개 이상의 행이 발생하는 경우 Iterator를 사용하여 쿼리 결과를 쿼리 결과를 throw합니다.StreamList streams the result of the query using an Iteratorator, if the class has a default constructor to create instance with.d) If the query result in more than one rows, it throws an non-unique result streams the result of the query using an Iterator 스트리밍 모드에서 Splitter EIP와 함께 사용하여 ResultSet을 스트리밍 방식으로 처리할 수 있습니다. | SelectList | SqlOutputType |
구분자 (공용) | 명명된 매개 변수를 사용하는 경우 Map 유형이 대신 사용됩니다.The separator to use when parameter values is taken from message body (if the body is a String type), to be inserted at # placeholders.Notice if you use named parameters, then a Map type is used instead. 기본값은 쉼표입니다. | , | knative |
breakBatchOnConsumeFail (consumer) | onConsume에 실패할 경우 배치를 중단할지 여부를 설정합니다. | false | boolean |
bridgeErrorHandler (consumer) | 소비자가 수신되는 메시지를 선택하려고 하는 동안 예외가 발생했음을 나타내는 Camel 라우팅 오류 처리기에 소비자를 브리징할 수 있습니다. 즉, 소비자가 수신되는 메시지를 선택하려고 하는 동안 예외가 발생되거나 이제 메시지로 처리되고 라우팅 오류 처리기에 의해 처리됩니다. 기본적으로 소비자는 org.apache.camel.spi.Exception handler를 사용하여 WARN 또는 ERROR 수준에서 로깅되고 무시됩니다. | false | boolean |
expectedUpdateCount (consumer) | onConsume를 사용할 때 유효성을 검사할 예상 업데이트 수를 설정합니다. | -1 | int |
maxMessagesPerPoll (consumer) | 폴링할 최대 메시지 수를 설정합니다. | int | |
onConsume (consumer) | 각 행을 처리한 후 이 쿼리를 실행할 수 있습니다.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) | 전체 일괄 처리를 수행한 후 이 쿼리를 대규모 업데이트 행 등에 실행할 수 있습니다. 쿼리에 매개 변수가 있을 수 없습니다. | 문자열 | |
onConsumeFailed (consumer) | 각 행을 처리한 후 이 쿼리를 실행할 수 있습니다.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 |
Transacted (consumer) | 트랜잭션을 활성화하거나 비활성화합니다. 그런 다음 교환 처리가 실패하면 소비자가 추가 교환을 처리하여 롤백을 초래합니다. | false | boolean |
Use dayerator (consumer) | 결과값을 경로로 전달해야 하는 방법을 설정합니다. 목록 또는 개별 오브젝트로 전달을 나타냅니다. 기본값은 true입니다. | true | boolean |
예외 처리기 (consumer) | 소비자가 사용자 지정 예외 처리기를 사용하도록 하려면 다음을 수행합니다. bridgeErrorHandler 옵션이 활성화되어 있으면 이 옵션이 사용되지 않습니다. 기본적으로 소비자는 예외를 처리하며 WARN 또는 ERROR 수준에서 로깅되고 무시됩니다. | ExceptionHandler | |
exchangePattern (consumer) | 소비자가 교환을 생성할 때 교환 패턴을 설정합니다. | ExchangePattern | |
pollStrategy (consumer) | 플러그형 org.apache.camel.PollingConsumerPollingStrategy를 사용하면 Exchange를 생성하고 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인 경우 설정할 예상 매개 변수가 1개 이상인 경우에만 populateStatement가 호출됩니다. 예를 들어, 이렇게 하면 매개 변수가 없는 SQL 쿼리에 대한 메시지 본문/헤더를 읽지 않습니다. | false | boolean |
elSqlConfig (advanced) | 구성된 특정 ElSqlConfig를 사용합니다. 대신 databaseVendor 옵션을 사용하는 것이 좋습니다. | ElSqlConfig | |
parametersCount (advanced) | 0보다 큰 값을 설정하면 Camel은 JDBC 메타데이터 API를 통해 쿼리하는 대신 이 수의 매개 변수 값을 사용합니다. JDBC 벤더가 올바른 매개변수 수를 반환할 수 없는 경우 사용자가 대신 재정의할 수 있는 경우 유용합니다. | int | |
자리 표시자 (고급) | SQL 쿼리에서 대체될 문자를 지정합니다. 이는 간단한 String.replaceAll() 작업이며 SQL 구문 분석과 관련이 없습니다. 인용된 문자열도 변경됩니다. | # | 문자열 |
prepareStatementStrategy (advanced) | 플러그인에서 사용자 지정 org.apache.camel.component.sql.SqlPrepareStatementStrategy를 사용하여 쿼리 및 준비 문의 준비를 제어할 수 있습니다. | FlexVolumePrepareStatement 전략 | |
동기 (고급) | 동기 처리를 엄격하게 사용해야 하는지 또는 Camel이 비동기 처리(지원되는 경우)를 사용할 수 있는지 여부를 설정합니다. | false | boolean |
templateOptions (고급) | 맵에서 키/값으로 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) | backoffMultipler를 시작하기 전에 발생해야 하는 후속 오류 폴링(일부 오류 발생) 수입니다. | int | |
backoffIdleThreshold (scheduler) | backoffMultipler가 시작되기 전에 발생해야 하는 후속 유휴 폴링 수입니다. | int | |
backoffMultiplier (scheduler) | 행에 여러 개의 유휴 상태/errors가 있는 경우 예약된 폴링 소비자 백오프를 허용합니다. 그러면 다음 실제 시도가 다시 발생하기 전에 건너뛸 폴링 수입니다. 이 옵션을 사용 중인 경우 backoffIdleThreshold 및/또는 backoffErrorThreshold도 구성해야 합니다. | int | |
지연 (scheduler) | 다음 폴링 전 밀리초입니다. 60s(60초), 5m30s(5분 및 30초), 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 500 | long |
greedy (scheduler) | greedy가 활성화되면 이전에 폴링된 1개 이상의 메시지를 실행하면 ScheduledPollConsumer가 즉시 다시 실행됩니다. | false | boolean |
initialDelay (scheduler) | 첫 번째 폴링이 시작되기 전 밀리초입니다. 60s(60초), 5m30s(5분 및 30초), 1h(1시간)와 같은 단위를 사용하여 시간 값을 지정할 수도 있습니다. | 1000 | long |
runLoggingLevel (scheduler) | 소비자는 폴링할 때 시작/완전 로그 행을 기록합니다. 이 옵션을 사용하면 로깅 수준을 구성할 수 있습니다. | TRACE | LoggingLevel |
scheduledExecutorService (scheduler) | 소비자에 사용할 사용자 지정/공유 스레드 풀을 구성할 수 있습니다. 기본적으로 각 소비자에는 자체 단일 스레드 스레드 풀이 있습니다. | ScheduledExecutor Service | |
스케줄러 (scheduler) | camel-spring 또는 camel-quartz2 구성 요소에서 cron 스케줄러를 사용하려면 다음을 수행합니다. | none | ScheduledPollConsumer Scheduler |
schedulerProperties (scheduler) | 사용자 정의 스케줄러 또는 Quartz2, Spring 기반 스케줄러를 사용할 때 추가 속성을 구성하려면 다음을 수행합니다. | map | |
startScheduler (scheduler) | 스케줄러를 자동으로 시작해야 하는지 여부입니다. | true | boolean |
timeUnit (scheduler) | initialDelay 및 delay 옵션의 시간 단위입니다. | MILLISECONDS | TimeUnit |
useFixedDelay (scheduler) | 고정된 지연 또는 고정 속도가 사용되는 경우 제어합니다. 자세한 내용은 ScheduledExecutorService in JDK를 참조하십시오. | true | boolean |