class HerdstWorker::Queue::Facade
Attributes
app[RW]
processor[RW]
Public Class Methods
get_delay(index)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 149 def self.get_delay(index) messages_per_second = 10 send_time_per_message = 0.4 offset = (index / messages_per_second) delay = (offset * (messages_per_second * send_time_per_message)).to_i delay > 900 ? 900 : delay end
new(app, enabled, url, queue_wait_time)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 13 def initialize(app, enabled, url, queue_wait_time) self.app = app self.processor = HerdstWorker::Queue::Processor.new(app, enabled, url, queue_wait_time) end
Public Instance Methods
create_email_queue_message(template, company, message_data, attributes = nil, delay = 2)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 91 def create_email_queue_message(template, company, message_data, attributes = nil, delay = 2) # Convert instances of ApplicationRecord to attributes instead of json representation message_data.each do |key, value| message_data[key] = value.attributes if value.is_a?(ActiveRecord::Base) end # Build data data = Hash.new data[:app] = self.app.name data[:app_id] = company.id data[:app_name] = company.name data[:app_slug] = company.get_host_name data[:app_brand_id] = company.brand_id data[:app_host] = company.get_url data[:type] = "email" data[:template] = template data[:data] = message_data # Add message structure message = Hash.new message[:id] = SecureRandom.hex(32) message[:message_body] = data.to_json message[:message_attributes] = attributes if attributes message[:delay_seconds] = delay message end
create_notification_message(message_data, attributes = nil, expiry = nil, delay = nil)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 119 def create_notification_message(message_data, attributes = nil, expiry = nil, delay = nil) message = Hash.new message[:id] = SecureRandom.hex(32) message[:message_body] = Hash.new message[:message_body][:Type] = "Notification" message[:message_body][:Message] = message_data.to_json message[:message_body] = message[:message_body].to_json message[:message_attributes] = attributes ? attributes : Hash.new message[:message_attributes]["expiry"] = { :string_value => expiry.to_s, :data_type => "Number" } if expiry message[:delay_seconds] = delay if delay message.delete(:message_attributes) if message[:message_attributes].size == 0 message end
create_queue_message(type, company_id, user_id, data, attributes = nil, delay = nil)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 72 def create_queue_message(type, company_id, user_id, data, attributes = nil, delay = nil) message = Hash.new message[:id] = SecureRandom.hex(32) message[:message_body] = Hash.new message[:message_body][:eventVersion] = 1.0 message[:message_body][:eventSource] = "application:Que" message[:message_body][:eventTime] = Time.now.utc.strftime("%Y-%m-%dT%H:%M:%S.%LZ") message[:message_body][:eventName] = type.to_s.camelize(:lower) message[:message_body][:userIdentity] = { :principalId => user_id, :companyId => company_id } message[:message_body][:Que] = data message[:message_body][:Que][:configurationId] = message[:message_body][:eventName] message[:message_body] = { :Records => [message[:message_body]] }.to_json message[:message_attributes] = attributes if attributes message[:delay_seconds] = delay if delay message end
get_processor()
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 39 def get_processor self.processor end
get_queue_client(queue_name)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 136 def get_queue_client(queue_name) queue_url = self.app.queues[queue_name] sqs_client = Aws::SQS::Client.new( :credentials => self.app.config.metadata.get_aws_credentials ) Aws::SQS::Queue.new( :url => queue_url, :client => sqs_client ) end
get_status()
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 19 def get_status self.processor.processor_status end
halt()
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 29 def halt self.processor.halt end
send_email_message(template, company, data = {}, attributes = nil, delay = nil)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 62 def send_email_message(template, company, data = {}, attributes = nil, delay = nil) client = get_queue_client(:notifications) message = create_email_queue_message(template, company, data, attributes, delay) message.delete(:id) client.send_message(message) end
send_message(type, company_id, user_id, data = {}, queue = :primary, attributes = nil, delay = nil)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 44 def send_message(type, company_id, user_id, data = {}, queue = :primary, attributes = nil, delay = nil) client = get_queue_client(queue) message = create_queue_message(type, company_id, user_id, data, attributes, delay) message.delete(:id) client.send_message(message) end
send_messages(messages = [], queue = :primary)
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 53 def send_messages(messages = [], queue = :primary) client = get_queue_client(queue) messages.each_slice(10) do |messages_group| client.send_messages({ :entries => messages_group }) end end
start()
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 24 def start self.processor.start end
stop()
click to toggle source
# File lib/herdst_worker/queue/facade.rb, line 34 def stop self.processor.stop end