iii

Cron

Schedule functions with cron expressions.

Schedule functions to execute at specific times using cron expressions.

modules::cron::CronModule

Sample Configuration

- class: modules::cron::CronModule
  config:
    adapter:
      class: modules::cron::adapters::RedisAdapter
      config:
        redis_url: ${REDIS_URL:redis://localhost:6379}

Configuration

adapter
Adapter

The adapter to use for distributed locking and job persistence. Redis adapter is recommended for multi-instance deployments.

Adapters

modules::cron::adapters::RedisAdapter

Uses Redis for distributed locking to prevent duplicate job execution across multiple engine instances.

class: modules::cron::adapters::RedisAdapter
config:
  redis_url: ${REDIS_URL:redis://localhost:6379}

Configuration

redis_url
string

The URL of the Redis instance to use for distributed locking.

Trigger Type

This Module adds a new Trigger Type: cron.

Sample Code

import { logger } from '@iii-dev/sdk'

// Register a function to run on a schedule
bridge.registerFunction({
  function_path: 'jobs.cleanupOldData',
  handler: async () => {
    logger.info('Running scheduled cleanup...')
    // Perform cleanup tasks
  },
})

// Schedule to run every day at 2 AM
bridge.registerTrigger({
  trigger_type: 'cron',
  function_path: 'jobs.cleanupOldData',
  config: {
    cron: '0 2 * * *',
  },
})

Common Cron Expressions

ExpressionDescription
* * * * *Every minute
0 * * * *Every hour
0 0 * * *Every day at midnight
0 0 * * 0Every Sunday at midnight
0 2 * * *Every day at 2 AM
*/5 * * * *Every 5 minutes
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, Monday to Friday

Distributed Execution

When running multiple iii Engine instances, the Cron Module uses distributed locking to ensure jobs execute only once:

On this page