Appendix A. Kafka Streams Configuration

Kafka Streams is highly configurable, and the available parameters, as well as their default values, are a moving target. Therefore, the configuration properties listed in this appendix should be used as a starting point for familiarizing yourself with the various configuration parameters, but please refer to the official documentation for the latest information.

Configuration Management

In this book, we’ve been configuring Kafka Streams applications by creating a Properties instance, and setting the various configuration parameters manually. An example of this strategy is shown in the following code:

class App {

  public static void main(String[] args) {
    Topology topology =;

    Properties config = new Properties();
    config.put(StreamsConfig.APPLICATION_ID_CONFIG, "dev-consumer");
    config.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka:9092");

    KafkaStreams streams = new KafkaStreams(topology, config);

    // ....

However, when it’s time to ship your application to production, you should consider loading your configuration from a file, instead of hardcoding the values directly in your application. Being able to make configuration changes without touching code is less error-prone, and if the configuration file can be overridden at runtime (e.g., via a system flag), then it’s extremely easy to manage multiple deployments of your application.1

A full discussion of configuration management strategies for Java applications ...

Get Mastering Kafka Streams and ksqlDB now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.