Module: SQS::Job

Defined in:
lib/sqs/job/thread_pool.rb,
lib/sqs/job.rb,
lib/sqs/job/policy.rb,
lib/sqs/job/worker.rb,
lib/sqs/job/handler.rb,
lib/sqs/job/version.rb,
lib/sqs/job/provisioner.rb,
lib/sqs/job/message/base.rb

Overview

A simple thread pool management object.

Defined Under Namespace

Modules: Message, Policy Classes: Handler, Provisoner, ThreadPool, Worker

Constant Summary collapse

VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.loggerObject



50
51
52
# File 'lib/sqs/job.rb', line 50

def logger
  @logger ||= Logger.new(STDERR)
end

.logger=(logger) ⇒ Object



49
# File 'lib/sqs/job.rb', line 49

def logger=(logger); @logger = logger; end

.max_threadsObject



42
43
44
# File 'lib/sqs/job.rb', line 42

def max_threads
  ENV['SQS_JOB_MAX_THREADS'] || 10
end

.min_threadsObject



38
39
40
# File 'lib/sqs/job.rb', line 38

def min_threads
  ENV['SQS_JOB_MIN_THREADS'] || 1
end

.send_message(queue, type, parameters) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
35
36
# 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_keysObject



47
# File 'lib/sqs/job.rb', line 47

def signing_keys; @signing_keys or raise "No signing keys are configured"; end

.signing_keys=(keys) ⇒ Object



46
# File 'lib/sqs/job.rb', line 46

def signing_keys=(keys); @signing_keys = keys; end