대상 환경에 따라 집계기에 일부 구성이 필요할 수 있습니다. 이미 알고 있듯이 각 집계기에 고유한 리포지토리(데이터베이스에서 생성된 테이블 쌍)와 데이터 소스가 있어야 합니다. 기본 lobHandler가 데이터베이스 시스템에 조정되지 않으면 lobHandler 속성을 사용하여 삽입할 수 있습니다.
Copy to ClipboardCopied!Toggle word wrapToggle overflow
==== optimistic locking
Camel 2.12 에서 여러 Camel 애플리케이션이 집계 리포지토리에 대해 동일한 데이터베이스를 공유 하는 클러스터 환경에서 이 JDBC 기반 집계 리포지토리를 켜고 이 JDBC 기반 집계 리포지토리를 사용할 수 있습니다. JDBC 드라이버가 경쟁 조건이 있는 경우 JDBC 드라이버가 JdbcAggregationRepository 에서 응답할 수 있는 공급업체 특정 예외를 throw합니다. JDBC 드라이버의 예외가 발생한 것을 알기 위해서는 이를 위해서는 mapper가 필요한 경우, JDBC 드라이버의 예외를 optimistick locking 오류로 간주해야 합니다. 따라서 org.apache.camel.processor.aggregate.jdbc.JdbcOptimisticLockingExceptionMapper 가 있으면 필요에 따라 사용자 정의 논리를 구현할 수 있습니다. 다음과 같이 작동하는 기본 구현 org.apache.camel.processor.aggregate.jdbc.DefaultJdbcOptimisticLockingExceptionMapper 가 있습니다.
다음 검사가 수행됩니다.
원인된 예외가 SQLException 으로 인해 23으로 시작되는 경우 SQLState가 확인됩니다.
원인된 예외가 DataIntegrityViolationException일 경우
발생한 예외 클래스 이름의 이름에 "ConstraintViolation"이 있는 경우.
클래스 이름이 구성된 경우 FQN 클래스 이름에 대한 선택적 검사와 일치합니다.
또한 FQN 클래스 이름을 추가할 수 있으며 원인이 발생한 예외 (또는 중첩된 예외) 중 하나가 FQN 클래스 이름 중 하나와 같은 경우 최적화 오류입니다.
다음은 JDBC 공급업체에서 2개의 추가 FQN 클래스 이름을 정의하는 예입니다.
<bean id="repo"
class="org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository">
<property name="transactionManager" ref="transactionManager"/>
<property name="repositoryName" value="aggregation"/>
<property name="dataSource" ref="dataSource"/>
<property name="jdbcOptimisticLockingExceptionMapper" ref="myExceptionMapper"/>
</bean>
<!-- use the default mapper with extraFQN class names from our JDBC driver -->
<bean id="myExceptionMapper" class="org.apache.camel.processor.aggregate.jdbc.DefaultJdbcOptimisticLockingExceptionMapper">
<property name="classNames">
<util:set>
<value>com.foo.sql.MyViolationExceptoion</value>
<value>com.foo.sql.MyOtherViolationExceptoion</value>
</util:set>
</property>
</bean>
<bean id="repo"
class="org.apache.camel.processor.aggregate.jdbc.JdbcAggregationRepository">
<property name="transactionManager" ref="transactionManager"/>
<property name="repositoryName" value="aggregation"/>
<property name="dataSource" ref="dataSource"/>
<property name="jdbcOptimisticLockingExceptionMapper" ref="myExceptionMapper"/>
</bean>
<!-- use the default mapper with extraFQN class names from our JDBC driver -->
<bean id="myExceptionMapper" class="org.apache.camel.processor.aggregate.jdbc.DefaultJdbcOptimisticLockingExceptionMapper">
<property name="classNames">
<util:set>
<value>com.foo.sql.MyViolationExceptoion</value>
<value>com.foo.sql.MyOtherViolationExceptoion</value>
</util:set>
</property>
</bean>
Copy to ClipboardCopied!Toggle word wrapToggle overflow