Browsing messages
The toolbar drives what you see:- Key / Value deserializer — how records are decoded: String, Integer, Long, Float, Double, JSON, Avro, Protobuf.
- Partitions — all partitions by default, or a subset.
- Max results — the total cap for a fetch (10 up to 1000).
- Seek type — where in the topic to read:
Live mode streams into the table as records land, with Pause /
Continue and a clear control; the other seek types fetch a page and offer
Reload.
On a very large or slow topic a fetch can hit its polling budget before
reaching the requested count — the table then flags the result as
incomplete rather than stalling. Narrow the partitions or lower Max results
and reload.
Producing a message
Click Produce Message on the topic’s page. The form slides in as a resizable drawer from the right — the page stays usable behind it, so with the Messages tab in Live mode you can watch your own message arrive.- Pick the Key and Value serdes — the same list as browsing, plus
Void for an intentional
null(a compaction tombstone). Numeric and JSON serdes deliberately reject empty input — “I mean null” is Void, never a forgotten field. - Enter the key and value — a full editor with live validation for JSON and schema serdes, a plain input for scalars.
- For a schema serde, pick the Subject — the Schema Registry subject the record is encoded against. The picker filters to subjects whose registered type matches the serde, and a scope switch (Default = topic-prefixed subjects / All subjects) narrows the list.
- (Optional) expand the collapsed Partition, Timestamp, Headers, or Compression panels to override the defaults (Kafka picks the partition, the broker stamps the time, no headers, no compression).
- Submit — a success toast confirms, and the Messages tab behind the drawer refreshes.
Producing is deliberately permissive: any serde can be produced to any
topic, and a serde that doesn’t match the topic’s registered schema raises
a non-blocking warning rather than a hard stop — the same behaviour as
comparable Kafka UIs. Hard enforcement, where you want it, belongs to
broker-side schema validation.