class Chore::Queues::SQS::Publisher

SQS Publisher, for writing messages to SQS from Chore

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