Module: Insque

Defined in:
lib/insque.rb,
lib/insque/railtie.rb,
lib/insque/version.rb,
lib/insque/json_logger.rb,
lib/insque/json_formatter.rb,
lib/generators/insque/initializer_generator.rb

Defined Under Namespace

Modules: Generators Classes: JsonFormatter, JsonLogger, Railtie

Constant Summary collapse

DEFAULT_INBOX_TTL =

seconds

10800
DEFAULT_PROCESSING_TTL =

seconds

3600
VERSION =
"0.7.4"

Class Method Summary collapse

Class Method Details

.broadcast(message, params = nil, recipient = :any) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/insque.rb', line 67

def self.broadcast message, params = nil, recipient = :any
  keys = []
  case recipient
  when :any
    pointers = @redis.keys('{insque}inbox_pointer_*')
    keys = pointers.count > 0 ? @redis.mget(*pointers) : []
  when :self
    keys = [@inbox]
  when :slow
    keys = [@slow_inbox]
  else
    keys = recipient.is_a?(Array) ? recipient : [recipient]
  end
  value = { message: "#{@sender}_#{message}", params: params, broadcasted_at: Time.now.utc }.to_json
  logger.debug event: :sending, message: value, to: keys.to_json
  @redis.multi do |r|
    keys.each {|k| r.lpush k, value}
  end
end

.inbox_ttlObject



16
17
18
# File 'lib/insque.rb', line 16

def self.inbox_ttl
  @inbox_ttl || DEFAULT_INBOX_TTL
end

.inbox_ttl=(val) ⇒ Object



12
13
14
# File 'lib/insque.rb', line 12

def self.inbox_ttl= val
  @inbox_ttl = val
end

.janitor(redis = nil) ⇒ Object



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

def self.janitor redis=nil
  real_janitor @inbox, @processing, (redis || create_redis_connection), @inbox_pointer
end

.listen(worker_name = '', redis = nil) ⇒ Object



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

def self.listen worker_name='', redis=nil
  redis ||= create_redis_connection
  do_listen @inbox, @processing, redis, worker_name, @inbox_pointer
end

.loggerObject



40
41
42
# File 'lib/insque.rb', line 40

def self.logger
  @logger ||= JsonLogger.new STDOUT, additional_fields: { tag: 'insque' }
end

.logger=(l) ⇒ Object



36
37
38
# File 'lib/insque.rb', line 36

def self.logger= l
  @logger = l
end

.processing_ttlObject



24
25
26
# File 'lib/insque.rb', line 24

def self.processing_ttl
  @processing_ttl || DEFAULT_PROCESSING_TTL
end

.processing_ttl=(val) ⇒ Object



20
21
22
# File 'lib/insque.rb', line 20

def self.processing_ttl= val
  @processing_ttl = val
end

.redisObject



32
33
34
# File 'lib/insque.rb', line 32

def self.redis
  @redis
end

.redis=(redis) ⇒ Object



28
29
30
# File 'lib/insque.rb', line 28

def self.redis= redis
  @redis = redis
end

.redis_class=(klass) ⇒ Object



44
45
46
# File 'lib/insque.rb', line 44

def self.redis_class= klass
  @redis_class = klass
end

.redis_configObject



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

def self.redis_config
  @redis_config
end

.redis_config=(redis) ⇒ Object



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

def self.redis_config= redis
  @redis_config = redis
  @redis = self.create_redis_connection
end

.sender=(sender) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/insque.rb', line 57

def self.sender= sender
  @sender = sender
  @inbox = "{insque}inbox_#{sender}"
  @inbox_pointer = "{insque}inbox_pointer_#{sender}"
  @processing = "{insque}processing_#{sender}"
  @slow_inbox = "{insque}slow_inbox_#{sender}"
  @slow_processing = "{insque}slow_processing_#{sender}"
  create_send_later_handler
end

.slow_janitor(redis = nil) ⇒ Object



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

def self.slow_janitor redis=nil
  real_janitor @slow_inbox, @slow_processing, (redis || create_redis_connection)
end

.slow_listen(worker_name = '', redis = nil) ⇒ Object



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

def self.slow_listen worker_name='', redis=nil
  do_listen @slow_inbox, @slow_processing, (redis || create_redis_connection), worker_name
end