conduktor.io ↗

Kafka StreamsGroupTopologyDescriptionUpdate Request Wire Format v0 — Binary Protocol Layout

What is StreamsGroupTopologyDescriptionUpdate?

Pushes a Streams application's topology description — subtopologies, processing nodes, and global state stores — to the group coordinator, which hands it to the configured topology description plugin (KIP-1331). Clients send it when a StreamsGroupHeartbeat response sets TopologyDescriptionRequired, and a member no longer in the group is rejected with UNKNOWN_MEMBER_ID so it treats itself as fenced and rejoins. Added on trunk after 4.3 — no released broker accepts it.

Related Errors

COORDINATOR_NOT_AVAILABLE · GROUP_AUTHORIZATION_FAILED · STREAMS_TOPOLOGY_DESCRIPTION_UPDATE_FAILED · UNSUPPORTED_VERSION

Wire Diagram

Request Header · flexible
message_size int32 · 4B
api_key int16 · 2B
api_version int16 · 2B
correlation_id int32 · 4B
client_id string (compact)
tagged var
StreamsGroupTopologyDescriptionUpdateRequest v0
GroupId string (compact)
MemberId string (compact)
TopologyEpoch int32 · 4B
TopologyDescription struct
tagged var
Subtopologies array
GlobalStores array
tagged var
SubtopologyId string (compact)
Nodes array
tagged var
Name string (compact)
NodeType int8 · 1B
SourceTopics []string
SinkTopic? string (compact)
Stores []string
Successors []string
tagged var
Source struct
Processor struct
tagged var
Name string (compact)
NodeType int8 · 1B
SourceTopics []string
SinkTopic? string (compact)
Stores []string
Successors []string
tagged var
Name string (compact)
NodeType int8 · 1B
SourceTopics []string
SinkTopic? string (compact)
Stores []string
Successors []string
tagged var

Schema & Example

Schema
{
  "GroupId": string,
  "MemberId": string,
  "TopologyEpoch": int32,
  "TopologyDescription": {
    "Subtopologies": [{
        "SubtopologyId": string,
        "Nodes": [{
            "Name": string,
            "NodeType": int8,
            "SourceTopics": [string],
            "SinkTopic": string?,
            "Stores": [string],
            "Successors": [string]
        }]
    }],
    "GlobalStores": [{
        "Source": {
          "Name": string,
          "NodeType": int8,
          "SourceTopics": [string],
          "SinkTopic": string?,
          "Stores": [string],
          "Successors": [string]
        },
        "Processor": {
          "Name": string,
          "NodeType": int8,
          "SourceTopics": [string],
          "SinkTopic": string?,
          "Stores": [string],
          "Successors": [string]
        }
    }]
  }
}
Example
{
  "GroupId": "order-processors",
  "MemberId": "consumer-1-abc123",
  "TopologyEpoch": 12,
  "TopologyDescription": {
    "Subtopologies": [{
        "SubtopologyId": "abc-123",
        "Nodes": [{
            "Name": "orders",
            "NodeType": 1,
            "SourceTopics": ["value-1", "value-2"],
            "SinkTopic": "",
            "Stores": ["value-1", "value-2"],
            "Successors": ["value-1", "value-2"]
        }]
    }],
    "GlobalStores": [{
        "Source": {
          "Name": "orders",
          "NodeType": 1,
          "SourceTopics": ["value-1", "value-2"],
          "SinkTopic": null,
          "Stores": ["value-1", "value-2"],
          "Successors": ["value-1", "value-2"]
        },
        "Processor": {
          "Name": "orders",
          "NodeType": 1,
          "SourceTopics": ["value-1", "value-2"],
          "SinkTopic": null,
          "Stores": ["value-1", "value-2"],
          "Successors": ["value-1", "value-2"]
        }
    }]
  }
}