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