class Ruboty::Handlers::SQS
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/ruboty/handlers/sqs.rb, line 9 def initialize(*args) super polling end
Public Instance Methods
send_message(message)
click to toggle source
# File lib/ruboty/handlers/sqs.rb, line 15 def send_message(message) channel = (message[:message_attributes] || {})['channel'] channel = channel ? channel[:string_value] : ENV['SQS_ROOM'] robot.say( body: message[:body], to: channel ) end
Private Instance Methods
polling()
click to toggle source
# File lib/ruboty/handlers/sqs.rb, line 31 def polling @polling_thread ||= begin th = Thread.new(self, sqs) do |robot, sqs| loop do begin resp = sqs.receive_message( queue_url: ENV['SQS_URL'], attribute_names: %w(All), message_attribute_names: [], max_number_of_messages: 3, wait_time_seconds: 10 ) messages = resp[:messages] messages.each do |message| robot.send_message(message) end sqs.delete_message_batch( queue_url: ENV['SQS_URL'], entries: messages.map { |m| { id: m[:message_id], receipt_handle: m[:receipt_handle] } } ) unless messages.empty? rescue Aws::SQS::Errors::ServiceError => e p e rescue => e p e end end end th.run th end end
sqs()
click to toggle source
# File lib/ruboty/handlers/sqs.rb, line 27 def sqs @sqs = ::Aws::SQS::Client.new() end