class Hoze::PubSubMessage

Public Class Methods

new(source_message, source) click to toggle source
# File lib/hoze/pubsub/message.rb, line 7
def initialize source_message, source
  @payload = source_message.data
  @timestamp = source_message.published_at
  @metadata = source_message.attributes
  @metadata['tries'] = (@metadata['tries'].to_i || 0) + 1
  @source_message = source_message
  @source = source
  @acked = false
end

Public Instance Methods

ack!() click to toggle source

Acknowledge the message

# File lib/hoze/pubsub/message.rb, line 23
def ack!
  @source_message.ack! unless @acked
  @acked = true
end
delay!(seconds) click to toggle source

Ask for more time before acknowledging

# File lib/hoze/pubsub/message.rb, line 18
def delay! seconds
  @source_message.delay! seconds
end
reject!() click to toggle source

Release the message

# File lib/hoze/pubsub/message.rb, line 29
def reject!
  @source_message.reject!
end
retry!() click to toggle source

Retry the message

# File lib/hoze/pubsub/message.rb, line 34
def retry!
  ack!
  retry_config = @source.max_tries || 1
  if @metadata['tries'] < retry_config
    puts "RETRYING: #{@metadata['tries']} / #{retry_config}"
    @source.topic.publish_async(@payload, @metadata)
  else
    puts "Dead message #{@source_message.inspect}"
  end
end