51.14. JDBC ベースのべき等リポジトリーの使用
このセクションでは、JDBC ベースのべき等リポジトリーを使用します。
抽象クラス
カスタム JDBC べき等リポジトリーを構築するために拡張できる抽象クラス org.apache.camel.processor.idempotent.jdbc.AbstractJdbcMessageIdRepository があります。
最初に、べき等リポジトリーで使用されるデータベーステーブルを作成する必要があります。次のスキーマを使用します。
CREATE TABLE CAMEL_MESSAGEPROCESSED ( processorName VARCHAR(255),
messageId VARCHAR(100) )
createdAt 列を追加しました。
CREATE TABLE CAMEL_MESSAGEPROCESSED ( processorName VARCHAR(255),
messageId VARCHAR(100), createdAt TIMESTAMP )
SQL Server の TIMESTAMP 型は、固定長のバイナリー文字列型です。DATE、TIME、または TIMESTAMP のいずれの JDBC 時刻型にもマップされません。
同時コンシューマーと連携する場合、列の processorName と messageId に一意の制約を作成することが重要です。この制約の構文はデータベースによって異なるため、ここでは示しません。
51.14.1. JDBC べき等リポジトリーをカスタマイズする リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて org.apache.camel.processor.idempotent.jdbc.JdbcMessageIdRepository を調整するためのいくつかのオプションがあります。
| パラメーター | デフォルト値 | 説明 |
|---|---|---|
| createTableIfNotExists | true | テーブルが存在しない場合、Camel がテーブルを作成しようとするかどうかを定義します。 |
| tableName | CAMEL_MESSAGEPROCESSED | デフォルト名の代わりにカスタムテーブル名を使用するには: CAMEL_MESSAGEPROCESSED。 |
| tableExistsString | SELECT 1 FROM CAMEL_MESSAGEPROCESSED WHERE 1 = 0 | このクエリーは、テーブルがすでに存在するかどうかを確認するために使用されます。テーブルが存在しないことを示すには、例外を出力する必要があります。 |
| createString | CREATE TABLE CAMEL_MESSAGEPROCESSED (processorName VARCHAR(255), messageId VARCHAR(100), createdAt TIMESTAMP) | テーブルの作成に使用されるステートメント。 |
| queryString | SELECT COUNT(*) FROM CAMEL_MESSAGEPROCESSED WHERE processorName = ?AND messageId = ? |
メッセージがリポジトリーにすでに存在するかどうかを判断するために使用されるクエリー (結果は 0 に等しくない)。2 つのパラメーターを取ります。この最初のものはプロセッサー名 ( |
| insertString | INSERT INTO CAMEL_MESSAGEPROCESSED (processorName, messageId, createdAt) VALUES (?, ?, ?) |
エントリーをテーブルに追加するために使用されるステートメント。3 つのパラメーターを取ります。1 つ目はプロセッサー名 ( |
| deleteString | DELETE FROM CAMEL_MESSAGEPROCESSED WHERE processorName = ?AND messageId = ? |
データベースからエントリーを削除するために使用されるステートメント。2 つのパラメーターを取ります。この最初のものはプロセッサー名 ( |
オプション tableName を使用すると、デフォルトの SQL クエリーを使用できますが、テーブル名が異なります。ただし、SQL クエリーをカスタマイズする場合は、それぞれを個別に設定できます。