View Source KafkaEx.Messages.OffsetAndMetadata (kafka_ex v1.0.0-rc.1)

Container for a committed offset with optional metadata.

This struct is used in offset commit operations to bundle an offset value with optional metadata that can be stored alongside it. The metadata is typically used for consumer group coordination or custom tracking purposes.

Java equivalent: org.apache.kafka.clients.consumer.OffsetAndMetadata

Summary

Functions

Builds an OffsetAndMetadata struct from keyword options.

Returns the leader epoch if present.

Returns the metadata string.

Creates a new OffsetAndMetadata with just an offset.

Creates a new OffsetAndMetadata with offset and metadata.

Returns the committed offset value.

Types

@type t() :: %KafkaEx.Messages.OffsetAndMetadata{
  leader_epoch: non_neg_integer() | nil,
  metadata: String.t(),
  offset: non_neg_integer()
}

Functions

@spec build(Keyword.t()) :: t()

Builds an OffsetAndMetadata struct from keyword options.

Options

  • :offset - (required) The committed offset value
  • :metadata - Optional metadata string (default: "")
  • :leader_epoch - Optional leader epoch for fencing

Examples

iex> OffsetAndMetadata.build(offset: 100)
%OffsetAndMetadata{offset: 100, metadata: "", leader_epoch: nil}

iex> OffsetAndMetadata.build(offset: 100, metadata: "v1", leader_epoch: 5)
%OffsetAndMetadata{offset: 100, metadata: "v1", leader_epoch: 5}
Link to this function

leader_epoch(offset_and_metadata)

View Source
@spec leader_epoch(t()) :: non_neg_integer() | nil

Returns the leader epoch if present.

This is provided for API compatibility with Java's OffsetAndMetadata.leaderEpoch(). Returns nil if no leader epoch is set.

Link to this function

metadata(offset_and_metadata)

View Source
@spec metadata(t()) :: String.t()

Returns the metadata string.

This is provided for API compatibility with Java's OffsetAndMetadata.metadata().

@spec new(non_neg_integer()) :: t()

Creates a new OffsetAndMetadata with just an offset.

Parameters

  • offset - The committed offset value (must be non-negative)

Examples

iex> OffsetAndMetadata.new(100)
%OffsetAndMetadata{offset: 100, metadata: "", leader_epoch: nil}
@spec new(non_neg_integer(), String.t()) :: t()

Creates a new OffsetAndMetadata with offset and metadata.

Parameters

  • offset - The committed offset value (must be non-negative)
  • metadata - Metadata string to store with the offset

Examples

iex> OffsetAndMetadata.new(100, "consumer-v1")
%OffsetAndMetadata{offset: 100, metadata: "consumer-v1", leader_epoch: nil}
Link to this function

offset(offset_and_metadata)

View Source
@spec offset(t()) :: non_neg_integer()

Returns the committed offset value.

This is provided for API compatibility with Java's OffsetAndMetadata.offset().