Class: Kaal::Dispatch::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/kaal/dispatch/registry.rb

Overview

Base abstraction for dispatch audit logging.

Provides a pluggable interface for logging cron job dispatch attempts across different storage backends (memory, Redis, database, etc.).

Examples:

Implementing a custom registry

class MyRegistry < Kaal::Dispatch::Registry
  def log_dispatch(key, fire_time, node_id, status = 'dispatched')
    # Your custom implementation
  end

  def find_dispatch(key, fire_time)
    # Your custom implementation
  end
end

Instance Method Summary collapse

Instance Method Details

#dispatched?(key, fire_time) ⇒ Boolean

Check if a dispatch has been logged for a specific job and fire time.

Parameters:

  • key (String)

    the cron job key

  • fire_time (Time)

    when the job was scheduled to fire

Returns:

  • (Boolean)

    true if dispatch exists, false otherwise



56
57
58
# File 'lib/kaal/dispatch/registry.rb', line 56

def dispatched?(key, fire_time)
  find_dispatch(key, fire_time) ? true : false
end

#find_dispatch(_key, _fire_time) ⇒ Hash?

Find a dispatch record for a specific job and fire time.

Parameters:

  • key (String)

    the cron job key

  • fire_time (Time)

    when the job was scheduled to fire

Returns:

  • (Hash, nil)

    dispatch record or nil if not found

Raises:

  • (NotImplementedError)

    if not overridden by a subclass



46
47
48
# File 'lib/kaal/dispatch/registry.rb', line 46

def find_dispatch(_key, _fire_time)
  raise NotImplementedError, "#{self.class.name} must implement #find_dispatch"
end

#log_dispatch(_key, _fire_time, _node_id, _status = 'dispatched') ⇒ void

This method returns an undefined value.

Log a dispatch attempt for a cron job.

Parameters:

  • key (String)

    the cron job key (without namespace prefix)

  • fire_time (Time)

    when the job was scheduled to fire

  • node_id (String)

    identifier for the dispatching node

  • status (String)

    dispatch status (‘dispatched’, ‘failed’, etc.)

Raises:

  • (NotImplementedError)

    if not overridden by a subclass



35
36
37
# File 'lib/kaal/dispatch/registry.rb', line 35

def log_dispatch(_key, _fire_time, _node_id, _status = 'dispatched')
  raise NotImplementedError, "#{self.class.name} must implement #log_dispatch"
end