diff --git a/lib/outboxable/polling_publisher_worker.rb b/lib/outboxable/polling_publisher_worker.rb new file mode 100644 index 0000000..22ce75c --- /dev/null +++ b/lib/outboxable/polling_publisher_worker.rb @@ -0,0 +1,14 @@ +module Outboxable + class PollingPublisherWorker + include Sidekiq::Job + sidekiq_options queue: 'critical' + + def perform + Outbox.pending.find_in_batches(batch_size: 100).each do |batch| + batch.each do |outbox| + Outboxable::Worker.perform_async(outbox.id) + end + end + end + end +end \ No newline at end of file diff --git a/lib/outboxable/worker.rb b/lib/outboxable/worker.rb new file mode 100644 index 0000000..5503c4e --- /dev/null +++ b/lib/outboxable/worker.rb @@ -0,0 +1,9 @@ +module Outboxable + class Worker + include Sidekiq::Job + + def perform(outbox_id) + Outboxable::PublishingManager.publish(resource: Outbox.find(outbox_id)) + end + end +end \ No newline at end of file