Module: Qs

Defined in:
lib/qs.rb,
lib/qs/cli.rb,
lib/qs/job.rb,
lib/qs/event.rb,
lib/qs/queue.rb,
lib/qs/route.rb,
lib/qs/client.rb,
lib/qs/daemon.rb,
lib/qs/logger.rb,
lib/qs/runner.rb,
lib/qs/worker.rb,
lib/qs/io_pipe.rb,
lib/qs/message.rb,
lib/qs/payload.rb,
lib/qs/process.rb,
lib/qs/version.rb,
lib/qs/pid_file.rb,
lib/qs/qs_runner.rb,
lib/qs/queue_item.rb,
lib/qs/config_file.rb,
lib/qs/daemon_data.rb,
lib/qs/job_handler.rb,
lib/qs/test_runner.rb,
lib/qs/dispatch_job.rb,
lib/qs/error_handler.rb,
lib/qs/event_handler.rb,
lib/qs/process_signal.rb,
lib/qs/message_handler.rb,
lib/qs/payload_handler.rb,
lib/qs/dispatcher_queue.rb,
lib/qs/dispatch_job_handler.rb

Defined Under Namespace

Modules: Client, Daemon, DispatchJobHandler, DispatcherQueue, EventHandler, JobHandler, MessageHandler, Payload, RedisUrl, Worker Classes: CLI, CLIRB, Config, ConfigFile, DaemonData, DispatchJob, ErrorContext, ErrorHandler, Event, EventTestRunner, IOPipe, Job, JobTestRunner, Logger, Message, NoHandlerClassError, NullLogger, PIDFile, PayloadHandler, Process, ProcessSignal, QsClient, QsRunner, Queue, QueueItem, RestartCmd, Route, Runner, TestClient, TestRunner

Constant Summary collapse

VERSION =
"0.6.0"
TimeoutError =
Class.new(RuntimeError)
NotFoundError =
Class.new(RuntimeError)
InvalidJobHandlerError =
Class.new(StandardError)
InvalidEventHandlerError =
Class.new(StandardError)
ShutdownError =
Class.new(DatWorkerPool::ShutdownError)

Class Method Summary collapse

Class Method Details

.clear_subscriptions(queue) ⇒ Object



76
77
78
# File 'lib/qs.rb', line 76

def self.clear_subscriptions(queue)
  self.client.clear_subscriptions(queue)
end

.clientObject



84
85
86
# File 'lib/qs.rb', line 84

def self.client
  @client
end

.configObject



12
# File 'lib/qs.rb', line 12

def self.config; @config ||= Config.new; end

.configure(&block) ⇒ Object



13
14
15
# File 'lib/qs.rb', line 13

def self.configure(&block)
  block.call(self.config)
end

.decode(encoded_payload) ⇒ Object



68
69
70
# File 'lib/qs.rb', line 68

def self.decode(encoded_payload)
  @decoder.call(encoded_payload)
end

.dispatcher_job_nameObject



100
101
102
# File 'lib/qs.rb', line 100

def self.dispatcher_job_name
  self.config.dispatcher.job_name
end

.dispatcher_queueObject



96
97
98
# File 'lib/qs.rb', line 96

def self.dispatcher_queue
  @dispatcher_queue
end

.encode(payload) ⇒ Object



64
65
66
# File 'lib/qs.rb', line 64

def self.encode(payload)
  @encoder.call(payload)
end

.enqueue(queue, job_name, params = nil) ⇒ Object



48
49
50
# File 'lib/qs.rb', line 48

def self.enqueue(queue, job_name, params = nil)
  @client.enqueue(queue, job_name, params)
end

.event_publisherObject



104
105
106
# File 'lib/qs.rb', line 104

def self.event_publisher
  self.config.event_publisher
end

.event_subscribers(event) ⇒ Object



80
81
82
# File 'lib/qs.rb', line 80

def self.event_subscribers(event)
  self.client.event_subscribers(event)
end

.initObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/qs.rb', line 17

def self.init
  self.config.redis.url ||= RedisUrl.new(
    self.config.redis.ip,
    self.config.redis.port,
    self.config.redis.db
  )

  @dispatcher_queue ||= DispatcherQueue.new({
    :queue_class            => self.config.dispatcher_queue_class,
    :queue_name             => self.config.dispatcher.queue_name,
    :job_name               => self.config.dispatcher.job_name,
    :job_handler_class_name => self.config.dispatcher.job_handler_class_name
  })

  @encoder ||= self.config.encoder
  @decoder ||= self.config.decoder
  @client  ||= Client.new(self.redis_config)
  @redis   ||= @client.redis
  true
end

.publish(channel, name, params = nil) ⇒ Object



52
53
54
# File 'lib/qs.rb', line 52

def self.publish(channel, name, params = nil)
  @client.publish(channel, name, params)
end

.publish_as(publisher, channel, name, params = nil) ⇒ Object



56
57
58
# File 'lib/qs.rb', line 56

def self.publish_as(publisher, channel, name, params = nil)
  @client.publish_as(publisher, channel, name, params)
end

.published_eventsObject



108
109
110
# File 'lib/qs.rb', line 108

def self.published_events
  self.dispatcher_queue.published_events
end

.push(queue_name, payload) ⇒ Object



60
61
62
# File 'lib/qs.rb', line 60

def self.push(queue_name, payload)
  @client.push(queue_name, payload)
end

.redisObject



88
89
90
# File 'lib/qs.rb', line 88

def self.redis
  @redis
end

.redis_configObject



92
93
94
# File 'lib/qs.rb', line 92

def self.redis_config
  self.config.redis.to_hash
end

.reset!Object



38
39
40
41
42
43
44
45
46
# File 'lib/qs.rb', line 38

def self.reset!
  self.config.reset
  @dispatcher_queue = nil
  @encoder          = nil
  @decoder          = nil
  @client           = nil
  @redis            = nil
  true
end

.sync_subscriptions(queue) ⇒ Object



72
73
74
# File 'lib/qs.rb', line 72

def self.sync_subscriptions(queue)
  self.client.sync_subscriptions(queue)
end