def batch_send *messages
entries = messages.flatten
unless entries.first.is_a?(Hash)
options = entries.last.is_a?(Hash) ? entries.pop : {}
entries = entries.collect{|msg| { :message_body => msg } }
if delay = options[:delay_seconds]
entries.each {|entry| entry[:delay_seconds] = delay }
end
end
entries.each_with_index {|entry,n| entry[:id] = n.to_s }
client_opts = {}
client_opts[:queue_url] = url
client_opts[:entries] = entries
response = client.send_message_batch(client_opts)
failed = batch_failures(entries, response, true)
checksum_failed = verify_send_message_batch_checksum entries, response
sent = response[:successful].collect do |sent|
msg = SentMessage.new
msg.message_id = sent[:message_id]
msg.md5 = sent[:md5_of_message_body]
msg
end
if !failed.empty? && !checksum_failed.empty?
send_error = Errors::BatchSendError.new(sent, failed)
checksum_error = Errors::ChecksumError.new(checksum_failed)
raise Errors::BatchSendMultiError.new send_error, checksum_error
elsif !failed.empty?
raise Errors::BatchSendError.new(sent, failed) unless failed.empty?
elsif !checksum_failed.empty?
raise Errors::ChecksumError.new(checksum_failed)
end
sent
end