lib/outboxable/polling_publisher_worker.rb in outboxable-1.0.0 vs lib/outboxable/polling_publisher_worker.rb in outboxable-1.0.2

- old
+ new

@@ -1,27 +1,28 @@ module Outboxable class PollingPublisherWorker include Sidekiq::Job sidekiq_options queue: 'critical' - def perform - Outboxable.configuration.orm == :mongoid ? perform_mongoid : perform_activerecord + def perform(args) + orm = args['orm'] + orm == 'mongoid' ? perform_mongoid(orm) : perform_activerecord(orm) end - def perform_activerecord + def perform_activerecord(orm) Outbox.pending.where(last_attempted_at: [..Time.zone.now, nil]).find_in_batches(batch_size: 100).each do |batch| batch.each do |outbox| # This is to prevent a job from being retried too many times. Worst-case scenario is 1 minute delay in jobs. - Outboxable::Worker.perform_async(outbox.id) + Outboxable::Worker.perform_async(outbox.id, orm) outbox.update(last_attempted_at: 1.minute.from_now, status: :processing, allow_publish: false) end end end - def perform_mongoid + def perform_mongoid(orm) Outbox.pending.where(last_attempted_at: [..Time.zone.now, nil]).each do |outbox| # This is to prevent a job from being retried too many times. Worst-case scenario is 1 minute delay in jobs. - Outboxable::Worker.perform_async(outbox.id) + Outboxable::Worker.perform_async(outbox.idempotency_key, orm) outbox.update(last_attempted_at: 1.minute.from_now, status: :processing, allow_publish: false) end end end end