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