[Talend]tDieを利用してジョブにエラーを発生させる

はじめに

こんにちは。DI部の大高です。

今回はTalendのコンポーネント「tDie」を利用したジョブのエラー発生を紹介したいと思います。

前提条件

Talendのバージョンは「Talend Open Studio for Big Data」の「Version 7.1.1」で検証しています。

tDieについて

「tDie」を利用するとジョブに対してエラーを発生させることができます。また、これを「tLogCatcher」を利用してハンドリングすることができます。

「tDie」コンポーネントのTalend Helpページはこちらです。

tDie

なお「tLogCatcher」については、下記の記事でご紹介していますのでご参照ください。

[Talend]tLogCatcherを利用してジョブの例外をハンドリングする | DevelopersIO

では、具体的に以下で解説していきます。

ジョブの説明

「tDie」で意図的にエラーを発生させて「tLogCatcher」で「tDie」をハンドリングをし、「tLogRow」でエラー内容を出力しています。

「tDie」コンポーネントの設定

「tDie」コンポーネントでは、「警告メッセージ」、「コード」、「優先度」の3つを設定して警告を発生させています。今回はすべてデフォルトの値のままにしています。

停止メッセージ

「tLogCatcher」におけるmessageカラムに渡されるメッセージの値になります。

エラーコード

「tLogCatcher」におけるcodeカラムに渡されるコードの値になります。

優先度

「tLogCatcher」におけるpriorityカラムに渡される優先度の値になります。なお、優先度と値の関係は以下の通りです。

優先度
トレース 1
デバッグ 2
情報 3
警告 4
エラー 5
致命的 6

JVMをすぐに終了

「詳細設定」にあるオプションです。

2019/01/16 現在、ヘルプには詳細内容が見受けられなかったのですが「有効」、「無効」にすると生成されるJavaコードに以下の違いがありました。

System.exit(4);
if (true) {
	throw new TDieException();
}

「tLogCatcher」コンポーネントの設定

「tLogCatcher」は以下のように設定し「tDie」をハンドリングするように設定しました。

こちらのコンポーネントの詳細については以下の記事もご参照ください。

[Talend]tLogCatcherを利用してジョブの例外をハンドリングする | DevelopersIO

「tLogRow」コンポーネントの設定

「tLogRow」コンポーネントでは、結果が見やすいように「モード」を「縦に表示」に設定しました。

実行結果

設定は以上です。実際にこのジョブを実行すると以下のように出力されます。

[statistics] connecting to socket on port 3446
[statistics] connected
the end is near
.----------------------------------.
|          #1. tLogRow_1           |
+------------+---------------------+
| key        | value               |
+------------+---------------------+
| moment     | 2019-01-16 10:52:26 |
| pid        | KWGDSO              |
| root_pid   | KWGDSO              |
| father_pid | KWGDSO              |
| project    | SANDBOX             |
| job        | tDie                |
| context    | Default             |
| priority   | 5                   |
| type       | tDie                |
| origin     | tDie_1              |
| message    | the end is near     |
| code       | 4                   |
+------------+---------------------+

[statistics] disconnected

「tDie」コンポーネントでエラーメッセージthe end is nearが表示され、その後に「tLogRow」でエラー内容が表示されています。なお、3行目のthe end is nearSystem.err.println("the end is near");で出力されるため、標準だと赤字で表示されます。

まとめ

以上、「tDie」コンポーネントの紹介でした。

ジョブを実行する場合に「業務エラーとしてジョブを意図的に停止させたい」というケースなどに利用できるコンポーネントだと思います。

それでは!