# File lib/aws/sqs/queue.rb, line 251 def poll(opts = {}, &block) poll_interval = opts[:poll_interval] || DEFAULT_POLL_INTERVAL opts[:limit] = opts.delete(:batch_size) if opts.key?(:batch_size) last_message_at = Time.now got_first = false loop do got_msg = false receive_messages(opts) do |message| got_msg = got_first = true last_message_at = Time.now yield(message) end unless got_msg Kernel.sleep(poll_interval) unless poll_interval == 0 return if hit_timeout?(got_first, last_message_at, opts) end end nil end