Class: PatientHttp::SolidQueue::TaskHandler
- Inherits:
-
TaskHandler
- Object
- TaskHandler
- PatientHttp::SolidQueue::TaskHandler
- 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
-
#active_job_data ⇒ Object
readonly
Returns the value of attribute active_job_data.
Instance Method Summary collapse
-
#initialize(active_job_data) ⇒ TaskHandler
constructor
A new instance of TaskHandler.
- #job_id ⇒ Object
- #on_complete(response, callback) ⇒ Object
- #on_error(error, callback) ⇒ Object
- #retry ⇒ Object
- #worker_class ⇒ Object
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_data ⇒ Object (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_id ⇒ Object
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 |
#retry ⇒ Object
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_class ⇒ Object
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 |