Module: StartHer::Publisher

Includes:
RedisClient
Included in:
Heartbeat
Defined in:
lib/start_her/publisher.rb

Instance Method Summary collapse

Methods included from RedisClient

#real_client

Methods included from RetryPolicies

#exponential_backoff

Instance Method Details

#publish(channel, message) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/start_her/publisher.rb', line 6

def publish(channel, message)
  exponential_backoff({}, ::Redis::BaseConnectionError) do
    client.publish(channel, message.to_msgpack)
  end
rescue => e
  StartHer.logger.error e
  raise e
end

#reliable_publish(channel, message) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/start_her/publisher.rb', line 15

def reliable_publish(channel, message)
  exponential_backoff({}, ::Redis::BaseConnectionError) do
    client.multi do |multi|
      backlog_ttl(channel)
      multi.lpush(channel.to_current_backlog, message.to_msgpack)
      multi.publish(channel, message.to_msgpack)
    end
  end
rescue => e
  StartHer.logger.error e
  raise e
end