Sha256: 2a8213064142f5045063c6cf9dc0943baec2efe0a8e953626ceefe26b1603f0d

Contents?: true

Size: 626 Bytes

Versions: 13

Compression:

Stored size: 626 Bytes

Contents

require 'aws-sdk'
require 'multi_json'

class Arsenicum::Queue::Sqs < Arsenicum::Queue
  attr_reader :sqs_queue, :via_sns

  def initialize(name, options = {})
    super name, options
    sqs_args = [options[:aws_account]].tap(&:compact!)
    sqs = AWS::SQS.new *sqs_args
    @sqs_queue = sqs.queues.named(name)
    @via_sns = options[:via_sns]
  end

  def pick
    message = sqs_message = sqs_queue.receive_message
    return unless message
    message = message.as_sns_message if via_sns

    [MultiJson.decode(message.body), sqs_message]
  end

  def handle_success(original_message)
    original_message.delete
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
arsenicum-0.4.2 lib/arsenicum/queue/sqs.rb
arsenicum-0.4.1 lib/arsenicum/queue/sqs.rb
arsenicum-0.4 lib/arsenicum/queue/sqs.rb
arsenicum-0.3.1.2 lib/arsenicum/queue/sqs.rb
arsenicum-0.3.1.1 lib/arsenicum/queue/sqs.rb
arsenicum-0.3.1 lib/arsenicum/queue/sqs.rb
arsenicum-0.3.0 lib/arsenicum/queue/sqs.rb
arsenicum-0.2.1.1 lib/arsenicum/queue/sqs.rb
arsenicum-0.2.1 lib/arsenicum/queue/sqs.rb
arsenicum-0.2 lib/arsenicum/queue/sqs.rb
arsenicum-0.1.3 lib/arsenicum/queue/sqs.rb
arsenicum-0.1.2 lib/arsenicum/queue/sqs.rb
arsenicum-0.1.1 lib/arsenicum/queue/sqs.rb