class Chore::Queues::SQS::Publisher
Public Class Methods
new(opts={})
click to toggle source
@param [Hash] opts Publisher
options
Calls superclass method
Chore::Publisher::new
# File lib/chore/queues/sqs/publisher.rb, line 11 def initialize(opts={}) super @sqs_queues = {} @sqs_queue_urls = {} end
reset_connection!()
click to toggle source
Sets a flag that instructs the publisher to reset the connection the next time it's used
# File lib/chore/queues/sqs/publisher.rb, line 29 def self.reset_connection! @@reset_next = true end
Public Instance Methods
publish(queue_name,job)
click to toggle source
Publishes a message to an SQS
queue
@param [String] queue_name Name of the SQS
queue @param [Hash] job Job
instance definition, will be encoded to JSON
@return [struct Aws::SQS::Types::SendMessageResult]
# File lib/chore/queues/sqs/publisher.rb, line 23 def publish(queue_name,job) queue = queue(queue_name) queue.send_message(message_body: encode_job(job)) end
Private Instance Methods
queue(name)
click to toggle source
Retrieves the SQS
queue object. The method will cache the results to prevent round trips on subsequent calls
If reset_connection!
has been called, this will result in the connection being re-initialized, as well as clear any cached results from prior calls
@param [String] name Name of SQS
queue
@return [Aws::SQS::Queue]
# File lib/chore/queues/sqs/publisher.rb, line 50 def queue(name) if @@reset_next Aws.empty_connection_pools! @sqs = nil @@reset_next = false @sqs_queues = {} end @sqs_queue_urls[name] ||= sqs.get_queue_url(queue_name: name).queue_url @sqs_queues[name] ||= Aws::SQS::Queue.new(url: @sqs_queue_urls[name], client: sqs) end
sqs()
click to toggle source
SQS
API client object
@return [Aws::SQS::Client]
# File lib/chore/queues/sqs/publisher.rb, line 38 def sqs @sqs ||= Chore::Queues::SQS.sqs_client end