48.16.4. Optimistic locking
optimisticLocking をオンにし、複数の Camel アプリケーションが集約リポジトリーに対して同じデータベースを共有するクラスター環境でこの JDBC ベースの集約リポジトリーを使用できます。競合状態がある場合、JDBC ドライバーは JdbcAggregationRepository が応答できるベンダー固有の例外を出力します。JDBC ドライバーからの例外が optimistick ロックエラーと見なされるかを知るには、マッパーが必要です。そのため、org.apache.camel.processor.aggregate.jdbc.JdbcOptimisticLockingExceptionMapper があり、必要に応じてカスタムロジックを実装できます。デフォルトの実装 org.apache.camel.processor.aggregate.jdbc.DefaultJdbcOptimisticLockingExceptionMapper は以下のように機能します。
以下のチェックが行われます。
-
原因となった例外が
SQLExceptionの場合、SQLState は 23 で始まる場合にチェックされます。 -
発生した例外が
DataIntegrityViolationExceptionの場合 - 発生した例外クラス名の名前が ConstraintViolation である場合。
- クラス名が設定されている場合、FQN クラス名のチェックがオプションになります。
さらに FQN クラス名を追加できます。発生した例外(またはネストされた)のいずれかが FQN クラス名と一致する場合は、optimistick locking エラーになります。
以下の例は、JDBC ベンダーから 2 つの追加の FQN クラス名を定義します。