Job Functions
はじめに
Job Functionsは、Function Job Poolでジョブが実行される際に呼び出すことができるFunctionタイプです。このFunctionにカスタムビジネスロジックをコーディングし、ジョブプールでFunctionをトリガーするジョブがスケジュールされた時間に実行されます。
Job Functionは、Event Functionsと同様に非HTTPS Functionです。このFunctionにはエンドポイントがなく、Function Job Poolでこの特定のJob Functionをターゲットタイプとしてジョブが実行された場合にのみ呼び出されます。
Job Functionは以下のランタイムでコーディングできます:
他のServerless Functionsと同様に、CLIからJob Functionsを作成、初期化、デプロイできます。また、Job FunctionをZIPファイルとしてコンソールにアップロードすることもできます。
ただし、Job Functionsは非HTTPS Functionであるため、そのURLはBasic I/OやAdvanced I/O Functionsのようにアクセスできません。Job Functionをテストするには、以下のCLIコマンドを使用し、Functionシェルを使用してください。
Job Functionは、Function実行の成功または失敗の判定以外のレスポンスを返しません。
また、以下のCatalyst DevOpsコンポーネントを使用して、Job Functionのパフォーマンスを表示・監視できます:
- Logs: Job Functionsに関するすべての実行を表示、管理、監視できます。
- Application Performance Monitoring: このコンポーネントを使用して、Job Functionのパフォーマンスに関する詳細なインサイトを収集できます。
メリット
-
Job FunctionはCatalystの堅牢なCLIを使用して作成、初期化、デプロイできます。これにより、CLIを通じてFunctionを初期化する際に、Functionのデプロイに必要なすべての依存関係が自動的にインストールされます。
-
Job FunctionsはCatalystのServerlessコンソールのエディタでも作成できます。
-
Job Functionsには、あらゆるカスタムビジネスロジックをコーディングできる理想的なボイラープレートコードが含まれており、残りのバックエンド要件はCatalystによって処理されます。
Functionボイラープレートコード
コンソールで作成するか、CLIを使用して初期化する際にJob Functionに含まれるボイラープレートコードを以下に示します:
import java.util.logging.Level;
import java.util.logging.Logger;
import com.catalyst.Context;
import com.catalyst.job.JOB_STATUS;
import com.catalyst.job.JobRequest;
import com.catalyst.job.CatalystJobHandler;
import com.zc.common.ZCProject;
import com.zc.component.cache.ZCCache;
public class Sample implements CatalystJobHandler {
private static final Logger LOGGER = Logger.getLogger(Sample.class.getName());
@Override
public JOB_STATUS handleJobExecute(JobRequest request, Context arg1) throws Exception {
try {
ZCProject.initProject();
Object eventData = request.getAllJobParams();
if (eventData != null) {
LOGGER.log(Level.SEVERE, "Data is" + eventData.toString());
}
LOGGER.log(Level.SEVERE, "Project Details " + request.getProjectDetails().toString());
ZCCache.getInstance().putCacheValue("JobSample", "Working", 1 l);
LOGGER.log(Level.SEVERE, "Inserted SucessFully:)");
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "Exception in Job Function", e);
return JOB_STATUS.FAILURE;
}
return JOB_STATUS.SUCCESS;
}
}
/**
*
-
@param {import("./types/job").JobRequest} jobRequest
-
@param {import("./types/job").Context} context
*/
module.exports = (jobRequest, context) => {
console.log(‘Hello from index.js’);
// function input: { job_details: { job_meta_details: { params: { key: ‘value’ } } } }
/**
- JOB REQUEST FUNCTIONALITIES
*/
const projectDetails = jobRequest.getProjectDetails(); // 現在のプロジェクト詳細を取得する
const jobDetails = jobRequest.getJobDetails(); // 現在のジョブ詳細を取得する
const jobMetaDetails = jobRequest.getJobMetaDetails(); // 現在のジョブのメタデータ詳細を取得する
const jobpoolDetails = jobRequest.getJobpoolDetails(); // 現在のFunctionジョブプールの詳細を取得する
const getJobCapacityAttributes = jobRequest.getJobCapacityAttributes(); // 現在のジョブのキャパシティを取得する
const allJobParams = jobRequest.getAllJobParams(); // ジョブ関数に渡されたすべてのパラメータを取得する
const jobParam = jobRequest.getJobParam(‘key’); // ジョブ関数に渡された特定のパラメータの値を取得する
/**
- CONTEXT FUNCTIONALITIES
*/
context.closeWithSuccess(); //end of application with success
// context.closeWithFailure(); //end of application with failure
};
import logging
def handler(job_request, context):
logger = logging.getLogger()
logger.info(‘Hello from main.py’)
# function input: { job_details: { job_meta_details: { params: { key: 'value' } } } }
‘‘‘JobRequest Functionalities’’’
job_details = job_request.get_job_details() # 現在のジョブの詳細を取得する
project_details = job_request.get_project_details() # 現在のプロジェクトの詳細を取得する
job_meta_details = job_request.get_job_meta_details() # 現在のジョブのメタデータを取得する
job_pool_details = job_request.get_job_pool_details() # 現在のFunctionジョブプールの詳細を取得する
job_capacity_attributes = job_request.get_job_capacity_attributes() # 現在のジョブのキャパシティを取得する
all_job_params = job_request.get_all_job_params() # ジョブ関数に渡されたすべてのパラメータを取得する
job_param = job_request.get_job_param(‘key’) # ジョブ関数に渡された特定のパラメータの値を取得する
‘‘‘Context Functionalities’’’
remaining_execution_time_ms = context.get_remaining_execution_time_ms() # ジョブ関数の最大許容実行時間を取得する
max_execution_time_ms = context.get_max_execution_time_ms() # このジョブ関数の残り実行時間を取得する
context.close_with_success() # 成功レスポンスで関数の実行を終了する
Catalyst CLIを使用したJob Functionsのテスト
Job FunctionsはEventおよびIntegration Functionsと同様に非HTTPS Functionsです。Job Functionを手動で呼び出したり、コンソールでテストしたりすることはできません。ただし、Catalyst CLIのFunctionシェルを使用してサンプルペイロードを生成し、Functionをテストできます。
以下のCLIコマンドでサンプルペイロードが生成され、ローカル環境でFunctionをテストするために使用できます。
このペイロードを必要なJob Functionの実行時に入力し、出力を検証できます。
Job Function引数
Catalyst Job Functionは、Javaで2つの引数をサポートしています:JobRequestとContext。
JobRequest引数には、以下の組み込みメソッドが含まれています:
- JobRequest.getProjectDetails(): プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。
- JobRequest.getJobDetails(): ジョブID、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。
- JobRequest.getJobMetaDetails(): 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。
- JobRequest.getJobpoolDetails(): Job Poolのすべての詳細を取得するために使用されます。詳細にはJob Pool ID、Job Pool名、Job Poolタイプが含まれます。
- JobRequest.getJobCapacityAttributes(): Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。
- JobRequest.getAllJobParams(): Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。
- JobRequest.getJobParam(String key): キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。
Context引数には、以下の組み込みメソッドが含まれています:
- Context.getRemainingExecutionTimeMs(): Job Functionの残りの実行時間を取得するために使用できます。
- Context.getMaxExecutionTimeMs(): このメソッドは、Job Functionの最大実行時間を取得するために使用でき、15分の定数値です。
Catalyst Job Functionは、Node.jsで2つの引数をサポートしています:jobDetailsとcontext。
jobDetails引数には、以下の組み込みメソッドが含まれています:
- jobDetails.getJobDetails(): ジョブID、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。
- jobDetails.getJobMetaDetails(): 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。
- jobDetails.getJobPoolDetails(): Job Poolのすべての詳細を取得するために使用されます。詳細にはJob Pool ID、Job Pool名、Job Poolタイプが含まれます。
- jobDetails.getProjectDetails(): プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。
- jobDetails.getJobCapacityAttributes(): Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。
- jobDetails.getAllJobParams(): Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。
- jobDetails.getJobParam(key): キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。
context引数には、以下の組み込みメソッドが含まれています:
- context.getRemainingExecutionTimeMs(): Job Functionの残りの実行時間を取得するために使用できます。
- context.getMaxExecutionTimeMs(): このメソッドは、Job Functionの最大実行時間を取得するために使用でき、15分の定数値です。
- context.closeWithSuccess(): このメソッドは、ジョブの実行が成功したことを示すために使用できます。
- context.closeWithFailure(): このメソッドは、ジョブの実行が失敗したことを示すために使用できます。
Catalyst Job Functionは、Pythonで2つの引数をサポートしています:job_detailsとcontext。
job_details引数には、以下の組み込みメソッドが含まれています:
- job_details.get_job_details(): ジョブID、関連するJob Pool、ジョブ名を含むジョブのすべての詳細を取得するために使用されます。
- job_details.get_job_meta_details(): 実行時間、ディスパッチ遅延、リトライ試行の詳細を含むジョブのすべてのメタ詳細を取得するために使用されます。
- job_details.get_job_pool_details(): Job Poolのすべての詳細を取得するために使用されます。詳細にはJob Pool ID、Job Pool名、Job Poolタイプが含まれます。
- job_details.get_project_details(): プロジェクトIDやプロジェクト名などのプロジェクト詳細を取得するために使用されます。
- job_details.get_job_capacity_attributes(): Function Job Poolに割り当てられたメモリに関するすべての詳細を取得するために使用されます。
- job_details.get_all_job_params(): Functionに渡されたすべてのパラメータ(キーと値のペア)を取得するために使用されます。
- job_details.get_job_param(key): キーを文字列としてFunctionに渡してパラメータの値を取得するために使用されます。
context引数には、以下の組み込みメソッドが含まれています:
- context.get_remaining_execution_time_ms(): Job Functionの残りの実行時間を取得するために使用できます。
- context.get_max_execution_time_ms(): このメソッドは、Job Functionの最大実行時間を取得するために使用でき、15分の定数値です。
- context.close_with_success(): このメソッドは、ジョブの実行が成功したことを示すために使用できます。
- context.close_with_failure(): このメソッドは、ジョブの実行が失敗したことを示すために使用できます。
最終更新日 2026-03-30 13:40:30 +0530 IST
Yes
No
Send your feedback to us
