Module: ActiveJob::Temporal::DeadLetterQueue
- Defined in:
- lib/activejob/temporal/dead_letter_queue.rb
Constant Summary collapse
- WORKFLOW_TYPE =
WorkflowTypes::DEAD_LETTER
- DEFAULT_ENTRIES_LIMIT =
100- ENTRY_QUERY_CONCURRENCY =
5
Class Method Summary collapse
-
.discard(job_class, job_id, reason: nil, client: ActiveJob::Temporal.client) ⇒ Object
rubocop:disable Naming/PredicateMethod.
- .entries(queue: nil, limit: DEFAULT_ENTRIES_LIMIT, client: ActiveJob::Temporal.client) ⇒ Object
- .entry(job_class, job_id, run_id: nil, client: ActiveJob::Temporal.client) ⇒ Object
- .retry(job_class, job_id, queue: nil, client: ActiveJob::Temporal.client) ⇒ Object
-
.workflow_id(job_class, job_id) ⇒ Object
rubocop:enable Naming/PredicateMethod.
Class Method Details
.discard(job_class, job_id, reason: nil, client: ActiveJob::Temporal.client) ⇒ Object
rubocop:disable Naming/PredicateMethod
48 49 50 51 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 48 def discard(job_class, job_id, reason: nil, client: ActiveJob::Temporal.client) handle_for(job_class, job_id, client: client).signal(:discard, reason) true end |
.entries(queue: nil, limit: DEFAULT_ENTRIES_LIMIT, client: ActiveJob::Temporal.client) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 22 def entries(queue: nil, limit: DEFAULT_ENTRIES_LIMIT, client: ActiveJob::Temporal.client) validate_limit!(limit) workflows = client.list_workflows(entries_query(queue)).first(limit) query_workflow_entries(client, workflows) end |
.entry(job_class, job_id, run_id: nil, client: ActiveJob::Temporal.client) ⇒ Object
18 19 20 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 18 def entry(job_class, job_id, run_id: nil, client: ActiveJob::Temporal.client) handle_for(job_class, job_id, run_id: run_id, client: client).query(:entry) end |
.retry(job_class, job_id, queue: nil, client: ActiveJob::Temporal.client) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 29 def retry(job_class, job_id, queue: nil, client: ActiveJob::Temporal.client) handle = handle_for(job_class, job_id, client: client) entry = handle.query(:entry) if retried_entry?(entry) workflow_id = entry.fetch("retry_workflow_id") log_retry_requested(entry, workflow_id, queue, duplicate: true) return workflow_id end ensure_pending_entry!(entry) workflow_id = retry_workflow_id(entry) duplicate = start_retry_workflow(client, entry, workflow_id, queue) log_retry_requested(entry, workflow_id, queue, duplicate: duplicate) mark_retried_entry(handle, workflow_id) workflow_id end |
.workflow_id(job_class, job_id) ⇒ Object
rubocop:enable Naming/PredicateMethod
54 55 56 57 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 54 def workflow_id(job_class, job_id) class_name = job_class.is_a?(Class) ? job_class.name : job_class.to_s "ajdlq:#{class_name}:#{job_id}" end |