325.17. PostgreSQL 사례

JdbcAggregationRepository 에서 사용하는 최적화 잠금에 문제가 있을 수 있는 특수 데이터베이스가 있습니다. PostgreSQL은 데이터 무결성 위반 예외 ( SQLState 23505)의 경우 연결을 유효하지 않은 것으로 표시합니다. 이렇게 하면 중첩 트랜잭션 내에서 연결을 효과적으로 사용할 수 없게 됩니다.This makes the connection effectively unavailable within nested transaction. 자세한 내용은 이 문서에서 확인할 수 있습니다.

org.apache.camel.processor.aggregate.jdbc.PostgresAggregationRepositoryJdbcAggregationRepository 을 확장하고 특수 INSERT를 사용합니다. ON CONFLICT ... 문에서 낙관적 잠금 동작을 제공합니다.

이 문은 (기본 집계 테이블 정의)입니다.

INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING

자세한 내용은 PostgreSQL 설명서에서 확인할 수 있습니다.

이 절을 사용하면 java.sql.PreparedStatement.executeUpdate() 호출은 SQLState=23505를 사용하여 SQLException을 throw하는 대신 0 을 반환합니다. 추가 처리는 일반 JdbcAggregationRepository 과 정확히 동일하지만 PostgreSQL 연결을 유효하지 않은 것으로 표시하지 않습니다.