Examples:
class QuickJob < ApplicationJob
temporal_options start_to_close_timeout: 30.seconds
end
ApplicationJob defaults inherited by subclasses
class ApplicationJob < ActiveJob::Base
temporal_options start_to_close_timeout: 2.minutes
end
class QuickJob < ApplicationJob
end
Merge inherited defaults intentionally
class DataProcessingJob < ApplicationJob
temporal_options ApplicationJob.temporal_options.merge(
heartbeat_timeout: 30.seconds
)
end
Long-running job with heartbeat
class DataProcessingJob < ApplicationJob
temporal_options(
start_to_close_timeout: 2.hours,
heartbeat_timeout: 30.seconds
)
end
All timeout types configured
class CriticalJob < ApplicationJob
temporal_options(
start_to_close_timeout: 10.minutes,
schedule_to_start_timeout: 1.minute,
schedule_to_close_timeout: 15.minutes,
heartbeat_timeout: 10.seconds
)
end