Module: CDC::Sidekiq::ProcessorJob

Defined in:
lib/cdc/sidekiq/processor_job.rb

Overview

Sidekiq job mixin that executes work through CDC runtime primitives.

The job remains a normal Sidekiq job. Sidekiq still owns scheduling, retries, queues, and persistence. cdc-sidekiq only changes how the job executes its payload once Sidekiq has started the job.

Examples:

Process many items through cdc-parallel

class ReindexUsersJob
  include Sidekiq::Job
  include CDC::Sidekiq::ProcessorJob

  cdc_processor UserIndexer
  cdc_runtime :parallel
end

Process I/O-heavy items through cdc-concurrent

class DeliverWebhooksJob
  include Sidekiq::Job
  include CDC::Sidekiq::ProcessorJob

  cdc_processor WebhookDeliverer
  cdc_runtime :concurrent
  cdc_concurrency 250
end

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ void

This method returns an undefined value.

Add CDC processor-job class methods to the including job class.

Parameters:

  • base (Class)

    Sidekiq job class including this module.



34
35
36
# File 'lib/cdc/sidekiq/processor_job.rb', line 34

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#perform(payload) ⇒ Object+

Execute a Sidekiq payload through the configured CDC runtime.

Array payloads are processed with #process_many when cdc_batch_payloads is enabled. Other payloads are processed with #process.

Parameters:

  • payload (Object, Array<Object>)

    Sidekiq job payload or batch payload.

Returns:

  • (Object, Array<Object>)

    CDC processor result or frozen result array.

Raises:



47
48
49
50
51
# File 'lib/cdc/sidekiq/processor_job.rb', line 47

def perform(payload)
  results = process_payload(payload)
  handle_processor_failures(results)
  results
end