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