17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/active_job/queue_adapters/amazon_sqs_adapter.rb', line 17
def enqueue_all(jobs)
enqueued_count = 0
jobs.group_by(&:queue_name).each do |queue_name, same_queue_jobs|
queue_url = Aws::Rails::SqsActiveJob.config.queue_url_for(queue_name)
base_send_message_opts = { queue_url: queue_url }
same_queue_jobs.each_slice(10) do |chunk|
entries = chunk.map do |job|
entry = Params.new(job, nil).entry
entry[:id] = job.job_id
entry[:delay_seconds] = Params.assured_delay_seconds(job.scheduled_at) if job.scheduled_at
entry
end
send_message_opts = base_send_message_opts.deep_dup
send_message_opts[:entries] = entries
send_message_batch_result = Aws::Rails::SqsActiveJob.config.client.send_message_batch(send_message_opts)
enqueued_count += send_message_batch_result.successful.count
end
end
enqueued_count
end
|