Module: MailRunner::QueueManagerBot
- Defined in:
- lib/mail_runner/queue_manager_bot.rb
Class Method Summary collapse
- .add_to_mail_queue(webhook, parcel) ⇒ Object
- .deliver_mail(webhook, json_packet) ⇒ Object
- .pop_packet_from_queue ⇒ Object
- .process_queue ⇒ Object
- .queue_length ⇒ Object
Class Method Details
.add_to_mail_queue(webhook, parcel) ⇒ Object
5 6 7 8 9 10 |
# File 'lib/mail_runner/queue_manager_bot.rb', line 5 def self.add_to_mail_queue(webhook,parcel) que_packet = [webhook,parcel] $redis.lpush("mail_room", que_packet.to_json) $logger.info("QueueManagerBot") { "#add_to_mail_queue:: email added to queue for processing later."} return true end |
.deliver_mail(webhook, json_packet) ⇒ Object
42 43 44 45 46 47 48 49 50 |
# File 'lib/mail_runner/queue_manager_bot.rb', line 42 def self.deliver_mail(webhook, json_packet) begin BotHelpers::Runner.post_to_hook(webhook, json_packet) rescue $logger.error("QueueManagerBot") { "#deliver_mail::ERROR: \nServer appears to be down. Make sure the server is running."} queued = self.add_to_mail_queue(webhook, json_packet) raise ArgumentError end end |
.pop_packet_from_queue ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/mail_runner/queue_manager_bot.rb', line 28 def self.pop_packet_from_queue # Pop from Queue & organize key, que_packet = $redis.blpop("mail_room", :timeout => 5) #timeout unnecessary in production because of while condition, but needed for MockRedis in Testing Env. $logger.info("QueueManagerBot") { "#item popped from Queue for processing"} data = JSON::parse(que_packet) webhook = data[0] json_packet = data[1] return webhook, json_packet end |
.process_queue ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/mail_runner/queue_manager_bot.rb', line 16 def self.process_queue $logger.info("QueueManagerBot") { "Queue Length:: #{queue_length}"} while queue_length > 0 $logger.info("QueueManagerBot") { "#process_queue:: Processing queue item:#{queue_length}"} webhook, json_packet = pop_packet_from_queue deliver_mail(webhook, json_packet) #archive call end end |
.queue_length ⇒ Object
12 13 14 |
# File 'lib/mail_runner/queue_manager_bot.rb', line 12 def self.queue_length return $redis.llen("mail_room") end |