Module: ActiveJob::Temporal::DeadLetterQueue
- Defined in:
- lib/activejob/temporal/dead_letter_queue.rb
Constant Summary collapse
- WORKFLOW_TYPE =
"ActiveJobTemporalDeadLetterWorkflow"- DEFAULT_ENTRIES_LIMIT =
100
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
41 42 43 44 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 41 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
17 18 19 20 21 22 23 24 25 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 17 def entries(queue: nil, limit: DEFAULT_ENTRIES_LIMIT, client: ActiveJob::Temporal.client) validate_limit!(limit) client.list_workflows(entries_query(queue)).each_with_object([]) do |workflow, entries| entry = query_workflow_entry(client, workflow) entries << entry if entry break entries if entries.size >= limit end end |
.entry(job_class, job_id, run_id: nil, client: ActiveJob::Temporal.client) ⇒ Object
13 14 15 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 13 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
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 27 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) return entry.fetch("retry_workflow_id") if retried_entry?(entry) ensure_pending_entry!(entry) workflow_id = retry_workflow_id(entry) start_retry_workflow(client, entry, workflow_id, queue) mark_retried_entry(handle, workflow_id) workflow_id end |
.workflow_id(job_class, job_id) ⇒ Object
rubocop:enable Naming/PredicateMethod
47 48 49 50 |
# File 'lib/activejob/temporal/dead_letter_queue.rb', line 47 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 |