View Source KafkaEx.Protocol.Kayrock.JoinGroup.RequestHelpers (kafka_ex v1.0.0-rc.1)

Shared helper functions for building JoinGroup requests across all versions.

Summary

Functions

Builds group_protocols from a list of topics using the "assign" protocol.

Builds a JoinGroup V0 request by populating the request template with extracted fields.

Builds a JoinGroup V1/V2 request (adds rebalance_timeout).

Builds a JoinGroup V5+ request (adds group_instance_id for static membership, KIP-345).

Extracts common fields from request options. These fields are present in all versions (V0, V1, V2).

Functions

Link to this function

build_group_protocols(topics)

View Source
@spec build_group_protocols([String.t()]) :: [map()]

Builds group_protocols from a list of topics using the "assign" protocol.

Link to this function

build_v0_request(request_template, opts)

View Source
@spec build_v0_request(map(), Keyword.t()) :: map()

Builds a JoinGroup V0 request by populating the request template with extracted fields.

Link to this function

build_v1_or_v2_request(request_template, opts)

View Source
@spec build_v1_or_v2_request(map(), Keyword.t()) :: map()

Builds a JoinGroup V1/V2 request (adds rebalance_timeout).

Link to this function

build_v5_plus_request(request_template, opts)

View Source
@spec build_v5_plus_request(map(), Keyword.t()) :: map()

Builds a JoinGroup V5+ request (adds group_instance_id for static membership, KIP-345).

The group_instance_id is used for static membership:

  • nil (default): Dynamic membership (same as V1-V4)
  • A string value: Static membership — the member keeps its assignment across restarts
Link to this function

extract_common_fields(opts)

View Source
@spec extract_common_fields(Keyword.t()) :: %{
  group_id: String.t(),
  session_timeout: integer(),
  member_id: String.t(),
  protocol_type: String.t(),
  group_protocols: [map()]
}

Extracts common fields from request options. These fields are present in all versions (V0, V1, V2).

If group_protocols is not provided but topics is, builds group_protocols automatically using the "assign" protocol with GroupProtocolMetadata.