module SQS::Job

A simple thread pool management object.

Constants

Provisoner
VERSION

Public Class Methods

logger() click to toggle source
# File lib/sqs/job.rb, line 50
def logger
  @logger ||= Logger.new(STDERR)
end
logger=(logger) click to toggle source
# File lib/sqs/job.rb, line 49
def logger=(logger); @logger = logger; end
max_threads() click to toggle source
# File lib/sqs/job.rb, line 42
def max_threads
  ENV['SQS_JOB_MAX_THREADS'] || 10
end
min_threads() click to toggle source
# File lib/sqs/job.rb, line 38
def min_threads
  ENV['SQS_JOB_MIN_THREADS'] || 1
end
send_message(queue, type, parameters) click to toggle source
# File lib/sqs/job.rb, line 10
def send_message queue, type, parameters
  require 'base64'

  message = {
    "type" => type,
    "params" => parameters
  }.to_json
  signature   = signing_keys.last.sign message
  fingerprint = signing_keys.last.fingerprint
  message_attributes = {
    "signature" => {
      "string_value" => Base64.strict_encode64(signature),
      "data_type" => "String",
    },
    "key_fingerprint" => {
      "string_value" => fingerprint,
      "data_type" => "String"
    }
  }
  queue.send_message message, message_attributes: message_attributes
end
signature_valid?(message, fingerprint, signature) click to toggle source
# File lib/sqs/job.rb, line 32
def signature_valid? message, fingerprint, signature
  !signing_keys.find do |k|
    k.fingerprint == fingerprint && k.verify_signature(message, signature)
  end.nil?
end
signing_keys() click to toggle source
# File lib/sqs/job.rb, line 47
def signing_keys; @signing_keys or raise "No signing keys are configured"; end
signing_keys=(keys) click to toggle source
# File lib/sqs/job.rb, line 46
def signing_keys=(keys); @signing_keys = keys; end