326.17. 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
详情可在 PostgreSQL 文档 中找到。
使用此子句时,java.sql.PreparedStatement.executeUpdate ()
调用返回 0,
而不是抛出带有 SQLState=23505 的 SQLException。进一步的处理与通用的 JdbcAggregationRepository
完全相同,但没有将 PostgreSQL 连接标记为无效。