Sha256: 1ad24ecf5d16845127f9bfc5128095c2d663a659686ce692198464b00c78965f

Contents?: true

Size: 1.14 KB

Versions: 8

Compression:

Stored size: 1.14 KB

Contents

module Propono
  class SqsMessage
    include Sqs

    attr_reader :context, :message, :raw_message, :receipt_handle, :failure_count
    def initialize(raw_message)
      raw_body = raw_message["Body"]
      @raw_body_json = JSON.parse(raw_body)
      body = JSON.parse(@raw_body_json["Message"])

      @raw_message    = raw_message
      @context        = body.symbolize_keys
      @failure_count  = context[:num_failures] || 0
      @message        = context.delete(:message)
      @receipt_handle = raw_message["receipt_handle"]
    end

    def to_json_with_exception(exception)
      message = @raw_body_json.dup
      context = {}
      context[:id] = @context[:id]
      context[:message] = @message
      context[:last_exception_message] = exception.message
      context[:last_exception_stack_trace] = exception.backtrace
      context[:last_exception_time] = Time.now
      context[:num_failures] = failure_count + 1
      context[:last_context] = @context
      message['Message'] = context.to_json
      JSON.pretty_generate(message)
    end

    def ==(other)
      other.is_a?(SqsMessage) && other.receipt_handle == @receipt_handle
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
propono-1.3.0 lib/propono/components/sqs_message.rb
propono-1.2.0 lib/propono/components/sqs_message.rb
propono-1.1.3 lib/propono/components/sqs_message.rb
propono-1.1.2 lib/propono/components/sqs_message.rb
propono-1.1.1 lib/propono/components/sqs_message.rb
propono-1.1.0 lib/propono/components/sqs_message.rb
propono-1.0.0 lib/propono/components/sqs_message.rb
propono-1.0.0.rc3 lib/propono/components/sqs_message.rb