紹介したいこと
Apaceh Hopでは、ローコードで実装した処理をWebサービスとして外部に公開できることを、前回に紹介しました。
続いて、時間のかかる処理を呼び出すための非同期処理(async)のWebサービスの実装方法について紹介します。
- Apaceh Hopで処理の流れ(Workflow)を定義します。Async Web Serviceとして、その処理を登録します。
- ① Webサービスでサービス名を指定して呼び出すことで実行することができます。このときに渡したいデータをJSONなどで渡すこと(Post)ができます。
- ② 実行している処理の状態をクエリして確認することができます。このときには、サービス名とIDを指定して呼び出します。
対象者
- Apache Hop (データ統合プラットフォーム) を使ってみたいかた。データ収集、変換処理をしたいかた。
- ローコードでETL処理を実装してWebサービスを作成したい方。
- 長い時間のかかる処理を呼び出したいかた。
前提環境
- Apache Hopの環境を構築している
- Webサービス(同期処理)を試したことある
現時点(2022/05/07時点)で最新であるApache Hop 1.2.0を例として説明します。
手順の流れ
- 変換処理を定義する
- Webサービスとして公開する
- 動作を確認する
変換処理(Workflow)を定義する
-
GetPostData.hplではPostしたデータを取得することを試しました。Postしたデータは、変数に格納できます。以下の例では変数ASYNC_CONTENTに格納して、Get variablesで取得してText file outputでファイルに出力してみました。
-
テストのためWait forでは20秒待機するように定義しました。
Webサービスとして公開する
Name: Webサービス名前を定義します。
Enabled?: チェックを有効にします。
Filename: 上記で作成したWorkflowのファイルを指定します。
Content variable: ASYNC_CONTENT Postしたデータを格納する変数名
動作を確認する
コマンドプロンプトでcurlコマンドでWebサービス(AsyncWeb)を呼び出し非同期処理を実行します。
curl -v --user cluster:cluster --request POST
-o async-run.json -H "Content-Type: application/json"
--data-binary "@document.json"
"http://localhost:8181/hop/asyncRun/?service=AsyncWeb&MAX=50000000"
サービス名は、AsyncWebを指定しています。
Postしたいjsonデータのファイル(document.json)を指定しています。
async-run.jsonに実行結果が出力されます。以下のidで処理が登録されました。
{"name":"dataload","id":"63b824b6-da7f-46ba-8219-e049ac69f1d6"}
以下のコマンドを実行して上記で実行した非同期処理の状態を確認します。
curl --user cluster:cluster --request GET "http://localhost:8181/hop/asyncStatus/?service=AsyncWeb&id=63b824b6-da7f-46ba-8219-e049ac69f1d6"
以下のレスポンスが返ってきます。
{
"service" : "AsyncWeb",
"id" : "63b824b6-da7f-46ba-8219-e049ac69f1d6",
"logDate" : "2022-05-07T07:29:58.506+0000",
"startDate" : "2022-05-07T07:26:52.204+0000",
"endDate" : "2022-05-07T07:27:12.414+0000",
"statusDescription" : "Finished",
"statusVariables" : { },
"pipelineStatuses" : [ ]
}
hop Serverにアクセスすると、登録した非同期処理の状態を確認できます。
http://localhost:8181
まとめ
- ローコードで時間のかかるETL処理を実装して、非同期Webサービスとして公開することをためしてみました。このWebサービスの機能は、Apache Hopの特徴の機能の1つとなります。
- もしも、興味をもっていただき詳細を知りたい場合には、公式のWebページを参照ください。
参考