Sha256: 649e260308145437fdd1d9c6279370d67d92a39e3226c718e3dda705825cab01

Contents?: true

Size: 1.46 KB

Versions: 9

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module BBK
  module AMQP
    # Store information about consumed AMQP message
    class Message

      attr_reader :consumer, :headers, :body, :payload, :delivery_info, :properties

      def initialize(consumer, delivery_info, properties, body)
        @consumer = consumer
        @properties = properties.to_h.with_indifferent_access
        @body = body
        amqp_consumer = delivery_info[:consumer]
        @delivery_info = delivery_info.to_h.merge(
          message_consumer: consumer,
          protocols:        consumer.protocols,
          queue:            amqp_consumer&.queue_name
        )
        @headers = @properties.except(:headers).merge(properties[:headers].presence || {}).with_indifferent_access
        @payload = begin
          Oj.load(body).with_indifferent_access
        rescue StandardError
          {}.with_indifferent_access
        end
      end

      def message_id
        headers[:message_id]
      end

      def reply_to
        headers[:reply_to]
      end

      def user_id
        headers[:user_id]
      end

      def ack(*args, answer: nil, **kwargs)
        consumer.ack(self, *args, answer: answer, **kwargs)
      end

      def nack(*args, error: nil, **kwargs)
        consumer.nack(self, *args, error: error, **kwargs)
      end

      def clone
        self.class.new(consumer, delivery_info, properties, body)
      end

      def protocol
        consumer&.protocols&.first
      end

    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
bbk-amqp-1.1.0.204853 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.204852 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.204568 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.200187 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.200034 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.200017 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.199806 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.199673 lib/bbk/amqp/message.rb
bbk-amqp-1.1.0.199449 lib/bbk/amqp/message.rb