51.16.6. PostgreSQL 问题单
有特殊的数据库可能会导致 JdbcAggregationRepository
使用优化的锁定问题。如果数据完整性冲突异常(SQLState 23505)除外),PostgreSQL 会将连接标记为无效。这使得连接在嵌套事务中有效不可用。详情请参考 文档。
org.apache.camel.processor.aggregate.jdbc.PostgresAggregationRepository
扩展 JdbcAggregationRepository
,并使用特殊的 INSERT。ON CONFLICT ..
语句提供优化锁定行为。
此声明为 (带有默认的聚合表定义):
INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING
INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING
详情请参考 PostgreSQL 文档。
当使用此 子句时,java.sql.PreparedStatement.executeUpdate ()
调用返回 0,
而不是抛出 SQLState=23505 的 SQLException。进一步处理与通用 JdbcAggregationRepository
相同,但没有将 PostgreSQL 连接标记为无效。