12 コマンド・イベント・ハンドラの使用
この章では、コマンド・イベント・ハンドラの使用方法について説明します。コマンド・イベント・ハンドラは、外部プログラムまたはスクリプトを同期的に実行するためのインタフェースを提供します。
- 概要 - コマンド・イベント・ハンドラ
コマンド・イベント・ハンドラの目的は、指定された外部プログラムまたはスクリプトを実行することで、ファイル・ライター・ハンドラによって生成されたデータ・ファイルを各ターゲットにロードすることです。 - コマンド・イベント・ハンドラの構成
ファイル・ライター・ハンドラのプロパティ・ファイルを使用して、コマンド・イベント・ハンドラの操作を構成できます。 - コマンド引数テンプレート文字列の使用
コマンド引数テンプレート文字列は、実行時に動的に解決されるキーワードで構成されます。コマンド引数テンプレート文字列は、commandArgumentTemplate
プロパティに指定されている順序と同じ順序で引数としてスクリプトに渡されます。
12.1 概要 - コマンド・イベント・ハンドラ
コマンド・イベント・ハンドラの目的は、指定された外部プログラムまたはスクリプトを実行することで、ファイル・ライター・ハンドラによって生成されたデータ・ファイルを各ターゲットにロードすることです。
親トピック: コマンド・イベント・ハンドラの使用
12.2 コマンド・イベント・ハンドラの構成
ファイル・ライター・ハンドラのプロパティ・ファイルを使用して、コマンド・イベント・ハンドラの操作を構成できます。
コマンド・イベント・ハンドラは、ファイル・ライター・ハンドラと組み合せてのみ機能します。
コマンド・イベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=command
およびその他のコマンド・イベント・プロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表12-1 コマンド・イベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
コマンド |
なし |
Replicatで使用するコマンド・イベント・ハンドラを選択します |
|
必須 |
実行する外部プログラムまたはスクリプトの有効なパス。 |
なし |
コマンド・イベント・ハンドラによって実行されるスクリプトまたは外部プログラム。 |
|
オプション |
ミリ秒を表す整数値。 |
無期限 |
コマンド・イベント・ハンドラは、スクリプトまたは外部プログラムでコールされたコマンドが完了するまで待機します。コマンド・イベント・ハンドラが、構成されたタイムアウト期間内にコマンドを完了できなかった場合、処理は異常終了します。 |
gg.eventhandler.name.multithreaded |
オプション | true | false |
true
|
trueの場合、スクリプトまたは外部プログラムに構成されているコマンドはマルチスレッド方式で実行されます。falseの場合は、単一スレッドで実行されます。 |
|
オプション |
「コマンド引数テンプレート文字列の使用」を参照してください。 |
なし |
コマンド・イベント・ハンドラでは、スクリプトまたは外部プログラムの実行時に入力引数としてコマンド引数テンプレート文字列を使用します。有効な引数文字列のリストについては、「コマンド引数テンプレート文字列の使用」を参照してください。 |
gg.eventhandler.command.type=command
gg.eventhandler.command.command=<path of the script to be executed>
#gg.eventhandler.command.cmdWaitMilli=10000
gg.eventhandler.command.multithreaded=true
gg.eventhandler.command.commandArgumentTemplate=${tablename},${datafilename},${countoperations}
親トピック: コマンド・イベント・ハンドラの使用
12.3 コマンド引数テンプレート文字列の使用
コマンド引数テンプレート文字列は、実行時に動的に解決されるキーワードで構成されます。コマンド引数テンプレート文字列は、commandArgumentTemplate
プロパティに指定されている順序と同じ順序で引数としてスクリプトに渡されます。
コマンド引数テンプレート文字列として使用される有効なトークンは、UUID
、TableName
、DataFileName
、DataFileDir
、DataFileDirandName
、Offset
、Format
、CountOperations
、CountInserts
、CountUpdates
、CountDeletes
およびCountTruncates
です。テンプレート文字列が無効な場合は異常終了します。
サポートされているテンプレート文字列
- ${format}
- ファイルの形式。たとえば、
delimitedtext | json | json_row | xml | avro_row | avro_op | avro_row_ocf | avro_op_ocf
です
- ${countOperations}
- データ・ファイル内の操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何も書き込まれていないため、ゼロ(0)になります。たとえば、1024です。
- ${countInserts}
- データ・ファイル内の挿入操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何も書き込まれていないため、ゼロ(0)になります。たとえば、125です。
- ${countUpdates}
- データ・ファイル内の更新操作の合計数。名前変更か、イベント・ハンドラで使用する必要があります。それ以外の場合、何も書き込まれていないため、ゼロ(0)になります。たとえば、265です。
ノート:
スクリプトまたはコマンドが正常に実行されると、コマンド・イベント・ハンドラは「The command completed successfully」という文および実行されたコマンドの文とともにメッセージを記録します。コマンドの実行時にエラーが発生した場合、コマンド・イベント・ハンドラはReplicatプロセスを異常終了させ、エラー・メッセージをログに記録します。親トピック: コマンド・イベント・ハンドラの使用