diff --git a/lib/webhooks/sender.rb b/lib/webhooks/sender.rb index 7c1c04c..816c9dc 100644 --- a/lib/webhooks/sender.rb +++ b/lib/webhooks/sender.rb @@ -3,7 +3,7 @@ module Webhooks # The class sends events in multi-threaded mode class Sender - MAX_THREADS = 8 + BATCH_SIZE = 8 URL = Settings.webhooks_url def initialize(events) @@ -14,9 +14,9 @@ def initialize(events) def send_events return unless URL - sort_events.each_value do |events| + events.compact.each_slice(BATCH_SIZE) do |events_batch| thread = Thread.new do - events.each do |event| + events_batch.each do |event| Client.new(URL).send_payload(event) end end @@ -30,20 +30,5 @@ def send_events private attr_reader :events, :threads - - def sort_events - i = 1 - result = {} - - events.compact.each do |event| - arr = result[i] - arr = [] if arr.nil? - arr << event - result[i] = arr - i >= MAX_THREADS ? i = 1 : i += 1 - end - - result - end end end