Module: QueuedMail::Queue::AmazonSqs::ModuleMethods

Included in:
QueuedMail::Queue::AmazonSqs
Defined in:
lib/queued_mail/queue/amazon_sqs.rb

Instance Method Summary collapse

Instance Method Details

#dequeueObject



14
15
16
# File 'lib/queued_mail/queue/amazon_sqs.rb', line 14

def dequeue
  raise "TODO"
end

#enqueue(message_id) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/queued_mail/queue/amazon_sqs.rb', line 5

def enqueue(message_id)
  begin
    sent_message = queue.send_message(JSON.dump('message_id' => message_id))
    Rails.logger.info "send message_id:#{sent_message.message_id} md5:#{sent_message.md5} (id:#{message_id})"
  rescue => e
    Rails.logger.error e
  end
end

#taskObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/queued_mail/queue/amazon_sqs.rb', line 18

def task
  if ENV['PIDFILE']
    File.open(ENV['PIDFILE'], 'w'){ |f| f << Process.pid }
  end

  begin
    queue.poll(poll_interval: 5, batch_size: 1) do |received_message|
      begin
        Rails.logger.info "receive message_id:#{received_message.id} md5:#{received_message.md5}"
        args = JSON.parse(received_message.body)
        QueuedMail::Job.perform(args)
      rescue => e
        received_message.visibility_timeout = 60
        raise e
      end
    end
  rescue SignalException
    # C-c
  rescue Exception => e
    Rails.logger.error e
    retry
  end
end