module StartHer::Publisher
Public Instance Methods
publish(channel, message)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
backlog_ttl(channel)
click to toggle source
Each day a new persistent backlog is created for a given channel Each backlog lives one week according to `StartHer.config.backlog_ttl'
# File lib/start_her/publisher.rb, line 32 def backlog_ttl(channel) return if client.ttl(channel.to_current_backlog) >= 0 client.expire(channel.to_current_backlog, StartHer.config.backlog_ttl) end