Class: PatientHttp::SolidQueue::TaskHandler

Inherits:
TaskHandler
  • Object
show all
Defined in:
lib/patient_http/solid_queue/task_handler.rb

Overview

Active Job implementation of TaskHandler.

Handles task lifecycle operations using Active Job for job management:

  • Completion and error callbacks are triggered via CallbackJob

  • Large payloads are stored via ExternalStorage before enqueuing

  • Job retry uses ActiveJob::Base.deserialize

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(active_job_data) ⇒ TaskHandler

Returns a new instance of TaskHandler.



14
15
16
# File 'lib/patient_http/solid_queue/task_handler.rb', line 14

def initialize(active_job_data)
  @active_job_data = active_job_data
end

Instance Attribute Details

#active_job_dataObject (readonly)

Returns the value of attribute active_job_data.



12
13
14
# File 'lib/patient_http/solid_queue/task_handler.rb', line 12

def active_job_data
  @active_job_data
end

Instance Method Details

#job_idObject



32
33
34
# File 'lib/patient_http/solid_queue/task_handler.rb', line 32

def job_id
  @active_job_data["job_id"]
end

#on_complete(response, callback) ⇒ Object



18
19
20
21
# File 'lib/patient_http/solid_queue/task_handler.rb', line 18

def on_complete(response, callback)
  data = store_if_needed(response.as_json)
  CallbackJob.perform_later(data, "response", callback)
end

#on_error(error, callback) ⇒ Object



23
24
25
26
# File 'lib/patient_http/solid_queue/task_handler.rb', line 23

def on_error(error, callback)
  data = store_if_needed(error.as_json)
  CallbackJob.perform_later(data, "error", callback)
end

#retryObject



28
29
30
# File 'lib/patient_http/solid_queue/task_handler.rb', line 28

def retry
  ActiveJob::Base.deserialize(@active_job_data).tap { |j| j.executions = 0 }.enqueue
end

#worker_classObject



36
37
38
# File 'lib/patient_http/solid_queue/task_handler.rb', line 36

def worker_class
  PatientHttp::ClassHelper.resolve_class_name(@active_job_data["job_class"])
end