40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { Client } from '@temporalio/client';
|
|
import { scheduledWorkflow } from './workflows';
|
|
|
|
// Save this to later terminate or cancel this schedule
|
|
const workflowId = 'my-schedule';
|
|
|
|
async function run() {
|
|
const client = new Client();
|
|
|
|
const handle = await client.workflow.start(scheduledWorkflow, {
|
|
taskQueue: 'cron-workflows',
|
|
workflowId: 'my-schedule', // Save this to later terminate or cancel this schedule
|
|
cronSchedule: '* * * * *', // start every minute
|
|
args: ['Temporal'],
|
|
});
|
|
console.log('Cron started');
|
|
|
|
try {
|
|
await handle.result(); // await completion of Workflow, which doesn't happen since it's a cron Workflow
|
|
} catch (err: any) {
|
|
console.error(err.message + ':' + handle.workflowId);
|
|
}
|
|
}
|
|
|
|
// just for this demo - cancel the workflow on Ctrl+C
|
|
process.on('SIGINT', async () => {
|
|
const client = new Client();
|
|
|
|
const handle = client.workflow.getHandle(workflowId);
|
|
await handle.cancel();
|
|
console.log(`\nCanceled Workflow ${handle.workflowId}`);
|
|
process.exit(0);
|
|
});
|
|
// you cannot catch SIGKILL
|
|
|
|
run().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|