Sha256: 4269d340d6d1dd198937d5e471d9a2b001d347a0f30a329f53da073bd40e43c0

Contents?: true

Size: 1.85 KB

Versions: 56

Compression:

Stored size: 1.85 KB

Contents

# frozen_string_literal: true

module Karafka
  module Messages
    # Messages batch represents a set of messages received from Kafka of a single topic partition.
    class Messages
      include Enumerable

      attr_reader :metadata

      # @param messages_array [Array<Karafka::Messages::Message>] array with karafka messages
      # @param metadata [Karafka::Messages::BatchMetadata]
      # @return [Karafka::Messages::Messages] lazy evaluated messages batch object
      def initialize(messages_array, metadata)
        @messages_array = messages_array
        @metadata = metadata
      end

      # @param block [Proc] block we want to execute per each message
      # @note Invocation of this method will not cause loading and deserializing of messages.
      def each(&block)
        @messages_array.each(&block)
      end

      # Runs deserialization of all the messages and returns them
      # @return [Array<Karafka::Messages::Message>]
      def deserialize!
        each(&:payload)
      end

      # @return [Array<Object>] array with deserialized payloads. This method can be useful when
      #   we don't care about metadata and just want to extract all the data payloads from the
      #   batch
      def payloads
        map(&:payload)
      end

      # @return [Array<String>] array with raw, not deserialized payloads
      def raw_payloads
        map(&:raw_payload)
      end

      # @return [Karafka::Messages::Message] first message
      def first
        @messages_array.first
      end

      # @return [Karafka::Messages::Message] last message
      def last
        @messages_array.last
      end

      # @return [Integer] number of messages in the batch
      def size
        @messages_array.size
      end

      # @return [Array<Karafka::Messages::Message>] pure array with messages
      def to_a
        @messages_array
      end
    end
  end
end

Version data entries

56 entries across 56 versions & 1 rubygems

Version Path
karafka-2.0.18 lib/karafka/messages/messages.rb
karafka-2.0.17 lib/karafka/messages/messages.rb
karafka-2.0.16 lib/karafka/messages/messages.rb
karafka-2.0.15 lib/karafka/messages/messages.rb
karafka-2.0.14 lib/karafka/messages/messages.rb
karafka-2.0.13 lib/karafka/messages/messages.rb
karafka-2.0.12 lib/karafka/messages/messages.rb
karafka-2.0.11 lib/karafka/messages/messages.rb
karafka-2.0.10 lib/karafka/messages/messages.rb
karafka-2.0.9 lib/karafka/messages/messages.rb
karafka-2.0.8 lib/karafka/messages/messages.rb
karafka-2.0.7 lib/karafka/messages/messages.rb
karafka-2.0.6 lib/karafka/messages/messages.rb
karafka-2.0.5 lib/karafka/messages/messages.rb
karafka-2.0.4 lib/karafka/messages/messages.rb
karafka-2.0.3 lib/karafka/messages/messages.rb
karafka-2.0.2 lib/karafka/messages/messages.rb
karafka-2.0.1 lib/karafka/messages/messages.rb
karafka-2.0.0 lib/karafka/messages/messages.rb
karafka-2.0.0.rc6 lib/karafka/messages/messages.rb