Topic Browse 0.7.0 Readme

Overview

Allows for browsing and searching for messages on a Kafka Cluster. Deserializes messages into their respective string format and allows for filtering on messages based on their string payload.

Browsing

Messages with payloads of the following types are supported:

  • STRING

  • AVRO

  • JSON_SCHEMA

  • PROTOBUF

JSON Schema and PROTOBUF are supported with Apicurio Schema Registry only.

Filtering

Message filtering based on the string representation of the deserialized payload. Only messages containing the (optional) provided request field query are returned.

Loggers

Below is a per-package breakdown of important packages to help operators configure logging:

Package Logger Description

io.axual.topicbrowse

Root package

io.axual.topicbrowse.consumer

Consumer Service

Kafka consumer lifecycle, partition consumption coordination, and offset management

io.axual.topicbrowse.deserialize

Message Deserialization

Message and header conversion from byte arrays to string representations

io.axual.topicbrowse.deserialize.field.avro

Avro Deserializer

Avro message deserialization

io.axual.topicbrowse.deserialize.field.jsonschema

JSON Schema Deserializer

JSON Schema message deserialization

io.axual.topicbrowse.deserialize.field.masker

Field Masker

Sensitive data masking functionality for JSON payloads

io.axual.topicbrowse.deserialize.field.protobuf

Protobuf Deserializer

Protobuf message deserialization

io.axual.topicbrowse.kafka

Kafka Client Config

Kafka client configuration, authentication strategies (mTLS, SASL/PLAIN, SASL/SCRAM), and SSL setup

io.axual.topicbrowse.validation

Validation Service

Request validation, topic existence checking, and access verification

OpenTelemetry Tracing Configuration

The service uses spring-boot-starter-opentelemetry for distributed tracing.

By default, tracing is enabled with 100% sampling, but OTLP export is disabled.

Enabling Trace Export

To export traces to an OTLP collector (such as Jaeger, Prometheus, or others), configure:

management:
  tracing:
    export:
      enabled: true
  opentelemetry:
    tracing:
      export:
        otlp:
          endpoint: http://otlp-collector:4317  # Replace with your OTLP collector URL
          transport: grpc  # Export protocol: grpc or http/protobuf
          headers: # Custom HTTP headers you want to pass to the collector, for example auth headers.
            key: value

Adjusting Sampling

The trace.sampling.probability property controls the fraction of spans that are collected. Setting it to 1.0 means all spans will be exported.

To adjust the sampling rate (default is 100%):

management:
  tracing:
    sampling:
      probability: 0.1  # 10% sampling

Support for Spring Boot 3.5.x properties

The service has support for Spring Boot 3.5.x OpenTelemetry properties.

You can use the following Spring Boot 3.5.x properties to configure OpenTelemetry:

management:
  tracing:
    enabled: true
  otlp:
    tracing:
      endpoint: http://otlp-collector:4317  # Replace with your OTLP collector URL
      transport: grpc  # Export protocol: grpc or http/protobuf
      headers: # Custom HTTP headers you want to pass to the collector, for example auth headers.
        key: value

The service will map each Spring Boot 3.5.x property to the corresponding Spring Boot 4.x OpenTelemetry property.

Spring Boot 3.5.x property Spring Boot 4.x property Default value

management.tracing.enabled

management.tracing.export.enabled

false

management.otlp.tracing.compression

management.opentelemetry.tracing.export.otlp.compression

"none"

management.otlp.tracing.connect-timeout

management.opentelemetry.tracing.export.otlp.connect-timeout

10s

management.otlp.tracing.endpoint

management.opentelemetry.tracing.export.otlp.endpoint

""

management.otlp.tracing.export.enabled

management.tracing.export.otlp.enabled

true

management.otlp.tracing.headers

management.opentelemetry.tracing.export.otlp.headers

""

management.otlp.tracing.timeout

management.opentelemetry.tracing.export.otlp.timeout

10s

management.otlp.tracing.transport

management.opentelemetry.tracing.export.otlp.transport

"http"