module MailRunner::QueueManagerBot
Public Class Methods
add_to_mail_queue(webhook,parcel)
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# 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()
click to toggle source
# File lib/mail_runner/queue_manager_bot.rb, line 12 def self.queue_length return $redis.llen("mail_room") end