Submit a Job to the Job Pool Using Jobs Component
You can use the Jobs component to submit jobs to its job pool instantly. The job can be created and submitted either using the console’s Builder or using the Java, Node.js or Python SDK.
Before you submit a job to the job pool, you need to ensure:
- If the job is being submitted to a Function Job Pool, then the job pool needs to be created with proper memory allocation to avoid dispatch delays.
To submit a job to a job pool:
-
Navigate to the Catalyst Job Scheduling Service section of the console, then click Start Exploring.
-
Navigate to Jobs under JOB EXECUTOR present in the side-bar, then click Create Job.
Create Job Using Builder
- Based on your job pool’s Target Type, the steps to configure a job vary. For the purposes of this help documentation, we are going to create a job for the Function Job Pool.
Note: You can find the steps to configure a job for:
- Select the Job Function you wish to trigger from the Target Function drop-down.
Note:
-
If you have initialized and coded a Job Function from the CLI, ensure you deploy it to the Catalyst console for the function to be listed in the drop-down.
-
If you have not created a Job Function, click Create New. You will be directed to the Catalyst Serverless section of the console. You can find steps to create a Job Function from this section.
- You can also enable the toggle present in the pop up to pass Query Parameters to your Job Function when the job triggers the function.
-
You can click the Show Advanced Options to provide resubmission instructions.
-
You can choose the number of retries you wish to attempt from the No. of Retries drop-down, and you can choose the time interval between each retry attempt using the Retry Interval drop-down.
Once you click Create, the job will be immediately submitted to the job pool for execution. This makes the Builder option a great tool to test your job pools performance.
Create Job Using SDK
Function Target Type
// FUNCTION JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the function job pool named test
// generate function job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // get function job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“target_function”) // set target function’s name (optional) (either TargetName or TargetId is mandatory)
// .setTargetId(1234567890L) // set the target function’s Id (optional) (either TargetName or TargetId is mandatory)
.setParams(new JSONObject() {
{
put(“arg1”, “job”);
put(“arg2”, “test”);
}
}) // set params to be passed to target function (optional)
.setJobName(“job_name”) // set job name
.build(); // build job meta
// submit function job
ZCJobDetails functionJob = jobpool.submitJob(jobMeta);
// FUNCTION JOB
const jobScheduling = app.jobScheduling(); // create job scheduling instance
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the function job pool named test
// create function job
const functionJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Function’, // set the target type as Function for function jobs
target_name: ’target_function’, // set the target function’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target functions’s Id (optional) (either target_id or target_name is mandatory)
params: {
arg1: ’test’,
arg2: ‘job’
}, // set params to be passed to target function (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
FUNCTION JOB
job_scheduling = app.job_scheduling() # create job scheduling instance
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the function jobpool named test
# create function job
function_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Function’, # set the target type as Function for function jobs
’target_name’: ’target_function’, # set the target function’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target functions’s Id (optional) (either target_id or target_name is mandatory)
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set params to be passed to target function (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
Circuit Target Type
// CIRCUIT JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the circuit job pool named test
// generate circuit job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.circuitJobBuilder() // create circuit job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“target_circuit”) // set target circuits’s name (optional) (either TargetName or TargetId is mandatory)
// .setTargetId(1234567890L) // set the target circuits’s Id (optional) (either TargetName or TargetId is mandatory)
.setCircuitInput(new JSONObject() {
{
put(“key1”, “value1”);
put(“key2”, “value2”);
}
}) // set the test cases for the circuit
.setJobName(“test_job”) // set job name
.build(); // build circuit job meta
// submit circuit job
ZCJobDetails circuitJob = jobpool.submitJob(jobMeta);
// CIRCUIT JOB
const jobScheduling = app.jobScheduling(); // create job scheduling instance
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the circuit job pool named test
// create circuit job
const circuitJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Circuit’, // set the target type as Circuit for circuit jobs
target_name: ’target_circuit’, // set the target circuit’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target circuit’s Id (optional) (either target_id or target_name is mandatory)
test_cases: {
arg1: “job”,
arg2: “test”
}, // set the circuit test cases
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
CIRCUIT JOB
job_scheduling = app.job_scheduling() # create job scheduling instance
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the circuit jobpool named test
# create circuit job
circuit_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Circuit’, # set the target type as Circuit for circuit jobs
’target_name’: ’target_circuit’, # set the target circuit’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target circuit’s Id (optional) (either target_id or target_name is mandatory)
’test_cases’: {
‘arg1’: ‘job’,
‘arg2’: ’test’
}, # set the circuit test cases
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
Webhook Target Type
// WEB HOOK JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the webhook job pool named test
// generate webhook job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.webhookJobBuilder() // create webhook job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setRequestMethod(“POST”) // set webhook request’s method
.setUrl(“https://catalyst.zoho.com”) // set webhook request’s url
.setParams(new JSONObject() {
{
put(“arg1”, “test”);
put(“arg2”, “job”);
}
}) // set the webhook request’s query params (optional)
.setHeaders(new JSONObject() {
{
put(“IS_TEST_REQUEST”, “true”);
}
}) // set the webhook request’s headers (optional)
.setRequestBody(“test_request”) // set the webhook request’s body (optional)
.setJobName(“test_job”) // set job name
.build(); // build webhook job meta
// submit webhook job
ZCJobDetails webHookJob = jobpool.submitJob(jobMeta);
// WEBHOOK JOB
const jobScheduling = app.jobScheduling(); // create job scheduling instance
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the webhook job pool named test
// create webhook job
const webhookJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘Webhook’, // set the target type as Webhook for webhook jobs
request_method: ‘POST’, // set the webhook request’s method
url: ‘https://catalyst.zoho.com’, // set the webhook request’s url
params: {
arg1: ’test’,
arg2: ‘job’
}, // set the webhook request’s query params (optional)
headers: {
IS_TEST_REQUEST: ’true’
}, // set the webhook request’s headers (optional)
request_body: ’test_request’, // set the webhook request’s body (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
WEBHOOK JOB
job_scheduling = app.job_scheduling() # create job scheduling instance
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the webhook jobpool named test
# create webhook job
webhook_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘Webhook’, # set the target type as Webhook for webhook jobs
‘request_method’: ‘POST’, # set the webhook request’s method
‘url’: ‘https://catalyst.zoho.com’, # set the webhook request’s url
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set the webhook request’s query params (optional)
‘headers’: {
‘IS_TEST_REQUEST’: ’true’
}, # set the webhook request’s headers (optional)
‘request_body’: ’test_request’, # set the webhook request’s body (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
AppSail Target Type
// APPSAIL JOB
// get job scheduling instance
ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance();
// create a job pool instance
ZCJobpool jobpool = jobScheduling.jobpoolInstance(“test”); // create a job pool instance for the appsail job pool named test
// generate appsail job meta
ZCJobMetaDetail jobMeta = ZCJobBuilder.appSailJobBuilder() // create appsail job builder
.setJobConfig(2, 15 * 60 * 1000L) // set job config - job retries => 2 retries in 15 mins (optional)
.setTargetName(“test_appsail”) // set appsail name
.setRequestMethod(“POST”) // set appsail request method
.setUrl("/test") // set appsail request url
.setParams(new JSONObject() {
{
put(“arg1”, “value1”);
put(“arg2”, “value2”);
}
}) // set appsail request query params
.setHeaders(new JSONObject() {
{
put(“IS_TEST_REQUEST”, “true”);
}
}) // set the appsail request’s headers (optional)
.setRequestBody(“test_request”) // set the appsail request’s body (optional)
.setJobName(“test_job”) // set job name
.build(); // build appsail job meta
// submit appsail job
ZCJobDetails appSailJob = jobpool.submitJob(jobMeta);
// APPSAIL JOB
const jobScheduling = app.jobScheduling(); // create job scheduling instance
const jobpool = jobScheduling.jobpool({ name: ’test’ }); // create job pool instance for the appsail job pool named test
// create appsail job
const appsailJob = await jobpool.submitJob({
job_name: ’test_job’, // set a name for the job
target_type: ‘AppSail’, // set the target type as AppSail for appsail jobs
target_name: ’target_appsail’, // set the target appsail’s name (optional) (either target_id or target_name is mandatory)
// target_id: ‘123467890’, // set the target appsail’s Id (optional) (either target_id or target_name is mandatory)
request_method: ‘POST’, // set the appsail request’s method
url: ‘/test’, // set the appsail’s url path (optional)
params: {
arg1: ’test’,
arg2: ‘job’
}, // set the appsail request’s query params (optional)
headers: {
IS_TEST_REQUEST: ’true’
}, // set the appsail request’s headers (optional)
request_body: ’test_request’, // set the appsail request’s body (optional)
job_config: {
number_of_retries: 2, // set the number of retries
retry_interval: 15 * 60 * 1000 + ’’ // set the retry interval
} // set job config - job retries => 2 retries in 15 mins (optional)
});
APPSAIL JOB
job_scheduling = app.job_scheduling() # create job scheduling instance
jobpool = job_scheduling.jobpool(jobpool_name=“test”) # create jobpool instance for the appsail jobpool named test
# create appsail job
appsail_job = jobpool.submit_job({
‘job_name’: ’test_job’, # set a name for the job
’target_type’: ‘AppSail’, # set the target type as AppSail for appsail jobs
’target_name’: ’target_appsail’, # set the target appsail’s name (optional) (either target_id or target_name is mandatory)
# ’target_id’: ‘123467890’, # set the target appsail’s Id (optional) (either target_id or target_name is mandatory)
‘request_method’: ‘POST’, # set the appsail request’s method
‘url’: ‘/test’, # set the appsail’s url path (optional)
‘params’: {
‘arg1’: ’test’,
‘arg2’: ‘job’
}, # set the appsail request’s query params (optional)
‘headers’: {
‘IS_TEST_REQUEST’: ’true’
}, # set the appsail request’s headers (optional)
‘request_body’: ’test_request’, # set the appsail request’s body (optional)
‘job_config’: {
’number_of_retries’: 2, # set the number of retries
‘retry_interval’: 15 * 60 * 1000 # set the retry interval
} # set job config - job retries => 2 retries in 15 mins (optional)
})
- Paste the snippet in your code file and engineer your logic.
The job that you create for your project will always be available in the Job component section.
Once the job is submitted, you will be able to view all the general details of the submitted job in the Job Definition section. You will also be able to view the status of the job execution in the Job Execution & Status section.
The execution status of the job will also be labeled at the top next to the Job Name. You will also be provided with the Job Definition in a JSON code format that you can copy and use to submit a new job with the same specifications. You can also visit the logs of the execution generated in DevOps’s Logs component by clicking the View Logs button.
Last Updated 2025-06-03 18:19:55 +0530 IST
Yes
No
Send your feedback to us