Broker Configuration Templates

This section references the default Zeebe standalone broker configuration templates, which are shipped with the distribution. They can be found inside the config folder and can be used to adjust Zeebe to your needs.

Default Standalone Broker Configuration

The default configuration contains the most common configuration options.

# Zeebe Standalone Broker configuration file (with embedded gateway)

# This file is based on broker.standalone.yaml.template but stripped down to contain only a limited
# set of configuration options. These are a good starting point to get to know Zeebe.
# For advanced configuration options, have a look at the templates in this folder.

# !!! Note that this configuration is not suitable for running a standalone gateway. !!!
# If you want to run a standalone gateway node, please have a look at gateway.yaml.template

# ----------------------------------------------------
# Byte sizes
# For buffers and others must be specified as strings and follow the following
# format: "10U" where U (unit) must be replaced with KB = Kilobytes, MB = Megabytes or GB = Gigabytes.
# If unit is omitted then the default unit is simply bytes.
# Example:
# sendBufferSize = "16MB" (creates a buffer of 16 Megabytes)
#
# Time units
# Timeouts, intervals, and the likes, must be specified either in the standard ISO-8601 format used
# by java.time.Duration, or as strings with the following format: "VU", where:
#   - V is a numerical value (e.g. 1, 5, 10, etc.)
#   - U is the unit, one of: ms = Millis, s = Seconds, m = Minutes, or h = Hours
#
# Paths:
# Relative paths are resolved relative to the installation directory of the broker.
# ----------------------------------------------------

zeebe:
  broker:
    gateway:
      # Enable the embedded gateway to start on broker startup.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_ENABLE.
      enable: true

      network:
        # Sets the port the embedded gateway binds to.
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_NETWORK_PORT.
        port: 26500

      security:
        # Enables TLS authentication between clients and the gateway
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_SECURITY_ENABLED.
        enabled: false

    network:
      # Controls the default host the broker should bind to. Can be overwritten on a
      # per binding basis for client, management and replication
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_HOST.
      host: 0.0.0.0

    data:
      # Specify a list of directories in which data is stored.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_DIRECTORIES.
      directories: [ data ]
      # The size of data log segment files.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_LOGSEGMENTSIZE.
      logSegmentSize: 512MB
      # How often we take snapshots of streams (time unit)
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_SNAPSHOTPERIOD.
      snapshotPeriod: 15m

    cluster:
      # Specifies the Zeebe cluster size.
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_CLUSTERSIZE.
      clusterSize: 1
      # Controls the replication factor, which defines the count of replicas per partition.
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_REPLICATIONFACTOR.
      replicationFactor: 1
      # Controls the number of partitions, which should exist in the cluster.
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_PARTITIONSCOUNT.
      partitionsCount: 1

    threads:
      # Controls the number of non-blocking CPU threads to be used.
      # WARNING: You should never specify a value that is larger than the number of physical cores
      # available. Good practice is to leave 1-2 cores for ioThreads and the operating
      # system (it has to run somewhere). For example, when running Zeebe on a machine
      # which has 4 cores, a good value would be 2.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_CPUTHREADCOUNT
      cpuThreadCount: 2
      # Controls the number of io threads to be used.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_IOTHREADCOUNT
      ioThreadCount: 2

Standalone Broker (with embedded Gateway)

# Zeebe Standalone Broker configuration file (with embedded gateway)

# ! ! ! ! ! ! ! ! ! !
# In order to activate the settings in this file, please choose one of the following ways:
# a) rename this file to application.yaml
# b) remove the *.template suffix and
#      Set the following environment variable: export SPRING_CONFIG_LOCATION='file:./config/broker.standalone.yaml'
#      Alternatively, you can also pass it as a command line argument: ./bin/broker --spring.config.location=file:./config/broker.standalone.yaml
# ! ! ! ! ! ! ! ! ! !

# Overview -------------------------------------------

# This file contains a complete list of available configuration options.

# This file shows example values for configuring several exporters. To enable an exporter
# please uncomment the whole block and overwrite the settings.

# Conventions:
#
# Byte sizes
# For buffers and others must be specified as strings and follow the following
# format: "10U" where U (unit) must be replaced with KB = Kilobytes, MB = Megabytes or GB = Gigabytes.
# If unit is omitted then the default unit is simply bytes.
# Example:
# sendBufferSize = "16MB" (creates a buffer of 16 Megabytes)
#
# Time units
# Timeouts, intervals, and the likes, must be specified either in the standard ISO-8601 format used
# by java.time.Duration, or as strings with the following format: "VU", where:
#   - V is a numerical value (e.g. 1, 5, 10, etc.)
#   - U is the unit, one of: ms = Millis, s = Seconds, m = Minutes, or h = Hours
#
# Paths:
# Relative paths are resolved relative to the installation directory of the broker.
# ----------------------------------------------------

# zeebe:
  # broker:
    # Sets the timeout for each start and closing step.
    #
    # Broker bootstrap and closing is divided in several individual steps.
    # Each step should take at max the defined stepTimeout, otherwise the bootstrap is aborted.
    #
    # This setting can also be overridden using the environment variable ZEEBE_BROKER_STEPTIMEOUT.
    # stepTimeout: 5m

    # gateway:
      # Enable the embedded gateway to start on broker startup.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_ENABLE.
      # enable: true

      # network:
        # Sets the host the embedded gateway binds to.
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_NETWORK_HOST.
        # host: 0.0.0.0

        # Sets the port the embedded gateway binds to.
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_NETWORK_PORT.
        # port: 26500

        # Sets the minimum keep alive interval
        # This setting specifies the minimum accepted interval between keep alive pings.
        # This value must be specified as a positive integer followed by 's' for seconds, 'm' for minutes or 'h' for hours.
        # This setting can also be overwritten using the environment variable ZEEBE_BROKER_GATEWAY_NETWORK_MINKEEPALIVEINTERVAL.
        # minKeepAliveInterval: 30s

      # cluster:
        # Sets the timeout of requests send to the broker cluster
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_CLUSTER_REQUESTTIMEOUT.
        # requestTimeout: 15s

      # threads:
        # Sets the number of threads the gateway will use to communicate with the broker cluster
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_THREADS_MANAGEMENTTHREADS.
        # managementThreads: 1

      # monitoring:
        # Enables the metrics collection in the gateway
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_MONITORING_ENABLED.
        # enabled: false

      # security:
        # Enables TLS authentication between clients and the gateway
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_SECURITY_ENABLED.
        # enabled: false

        # Sets the path to the certificate chain file
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_SECURITY_CERTIFICATECHAINPATH.
        # certificateChainPath:

        # Sets the path to the private key file location
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_GATEWAY_SECURITY_PRIVATEKEYPATH.
        # privateKeyPath:

    # network:
      # This section contains the network configuration. Particularly, it allows to
      # configure the hosts and ports the broker should bind to. The broker exposes three sockets:
      # 1. command: the socket which is used for gateway-to-broker communication
      # 2. internal: the socket which is used for broker-to-broker communication
      # 3. monitoring: the socket which is used to monitor the broker

      # Controls the default host the broker should bind to. Can be overwritten on a
      # per binding basis for client, management and replication
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_HOST.
      # host: 0.0.0.0

      # Controls the advertised host; if omitted defaults to the host. This is particularly useful if your
      # broker stands behind a proxy.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_ADVERTISEDHOST.
      # advertisedHost: 0.0.0.0

      # If a port offset is set it will be added to all ports specified in the config
      # or the default values. This is a shortcut to not always specifying every port.
      #
      # The offset will be added to the second last position of the port, as Zeebe
      # requires multiple ports. As example a portOffset of 5 will increment all ports
      # by 50, i.e. 26500 will become 26550 and so on.
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_PORTOFFSET.
      # portOffset: 0

      # Sets the maximum size of the incoming and outgoing messages (i.e. commands and events).
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_MAXMESSAGESIZE.
      # maxMessageSize: 4MB

      # commandApi:
        # Overrides the host used for gateway-to-broker communication
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_COMMANDAPI_HOST.
        # host: 0.0.0.0

        # Sets the port used for gateway-to-broker communication
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_COMMANDAPI_PORT.
        # port: 26501

      # internalApi:
        # Overrides the host used for internal broker-to-broker communication
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_INTERNALAPI_HOST.
        # host: 0.0.0.0

        # Sets the port used for internal broker-to-broker communication
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_INTERNALAPI_PORT.
        # port: 26502

      # monitoringApi:
        # Overrides the host used for exposing monitoring information
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_MONITORINGAPI_HOST.
        # host: 0.0.0.0

        # Sets the port used for exposing monitoring information
        # This setting can also be overridden using the environment variable ZEEBE_BROKER_NETWORK_MONITORINGAPI_PORT.
        # port: 9600

    # data:
      # This section allows to configure Zeebe's data storage. Data is stored in
      # "partition folders". A partition folder has the following structure:
      #
      # partition-0                       (root partition folder)
      # ├── partition.json                (metadata about the partition)
      # ├── segments                      (the actual data as segment files)
      # │   ├── 00.data
      # │   └── 01.data
      # └── state                     	(stream processor state and snapshots)
      #     └── stream-processor
      #		  ├── runtime
      #		  └── snapshots

      # Specify a list of directories in which data is stored. Using multiple
      # directories makes sense in case the machine which is running Zeebe has
      # multiple disks which are used in a JBOD (just a bunch of disks) manner. This
      # allows to get greater throughput in combination with a higher io thread count
      # since writes to different disks can potentially be done in parallel.
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_DIRECTORIES.
      # directories: [ data ]

      # The size of data log segment files.
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_LOGSEGMENTSIZE.
      # logSegmentSize: 512MB

      # How often we take snapshots of streams (time unit)
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_DATA_SNAPSHOTPERIOD.
      # snapshotPeriod: 15m

    # cluster:
      # This section contains all cluster related configurations, to setup a zeebe cluster

      # Specifies the unique id of this broker node in a cluster.
      # The id should be between 0 and number of nodes in the cluster (exclusive).
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_NODEID.
      # nodeId: 0

      # Controls the number of partitions, which should exist in the cluster.
      #
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_PARTITIONSCOUNT.
      # partitionsCount: 1

      # Controls the replication factor, which defines the count of replicas per partition.
      # The replication factor cannot be greater than the number of nodes in the cluster.
      #
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_REPLICATIONFACTOR.
      # replicationFactor: 1

      # Specifies the zeebe cluster size. This value is used to determine which broker
      # is responsible for which partition.
      #
      # This can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_CLUSTERSIZE.
      # clusterSize: 1

      # Allows to specify a list of known other nodes to connect to on startup
      # The contact points of the internal network configuration must be specified.
      # The format is [HOST:PORT]
      # Example:
      # initialContactPoints : [ 192.168.1.22:26502, 192.168.1.32:26502 ]
      #
      # To guarantee the cluster can survive network partitions, all nodes must be specified
      # as initial contact points.
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_INITIALCONTACTPOINTS
      # specifying a comma-separated list of contact points.
      # Default is empty list:
      # initialContactPoints: []

      # Allows to specify a name for the cluster
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_CLUSTER_CLUSTERNAME.
      # Example:
      # clusterName: zeebe-cluster

    # threads:
      # Controls the number of non-blocking CPU threads to be used. WARNING: You
      # should never specify a value that is larger than the number of physical cores
      # available. Good practice is to leave 1-2 cores for ioThreads and the operating
      # system (it has to run somewhere). For example, when running Zeebe on a machine
      # which has 4 cores, a good value would be 2.
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_CPUTHREADCOUNT
      # cpuThreadCount: 2

      # Controls the number of io threads to be used. These threads are used for
      # workloads that write data to disk. While writing, these threads are blocked
      # which means that they yield the CPU.
      #
      # This setting can also be overridden using the environment variable ZEEBE_BROKER_THREADS_IOTHREADCOUNT
      # ioThreadCount: 2

    # exporters:
      # Configure exporters below
      #
      # Each exporter should be configured following this template:
      #
      # jarPath:
      #   path to the JAR file containing the exporter class. JARs are only loaded once, so you can define
      #   two exporters that point to the same JAR, with the same class or a different one, and use args
      #   to parametrize its instantiation.
      # className:
      #   entry point of the exporter, a class which *must* extend the io.zeebe.exporter.Exporter
      #   interface.
      #
      # A nested table as "args:" will allow you to inject arbitrary arguments into your
      # class through the use of annotations.
      #
      # These setting can also be overridden using the environment variables "ZEEBE_BROKER_EXPORTERS_[exporter name]_..."
      #

      # Debug Log Exporter --------------
      #
      # Enable the following debug exporter to log the exported records to console
      #
      # These setting can also be overridden using the environment variables "ZEEBE_BROKER_EXPORTERS_DEBUGLOG_..."
      #
      # debuglog:
        # className: io.zeebe.broker.exporter.debug.DebugLogExporter
        # args:
        #   logLevel: debug
        #   prettyPrint: false

      # Debug HTTP Export ---------------
      #
      # Enable the following debug exporter to start a http server to inspect the exported records
      #
      # These setting can also be overridden using the environment variables "ZEEBE_BROKER_EXPORTERS_DEBUGHTTP_..."
      #
      # debugHttp:
        # className: io.zeebe.broker.exporter.debug.DebugHttpExporter
        # args:
        #   port = 8000
        #   limit = 1024

      # Elasticsearch Exporter ----------
      # An example configuration for the elasticsearch exporter:
      #
      # These setting can also be overridden using the environment variables "ZEEBE_BROKER_EXPORTERS_ELASTICSEARCH_..."
      #
      # elasticsearch:
        # className: io.zeebe.exporter.ElasticsearchExporter
        #
        # args:
        #   url: http://localhost:9200
        #
        #   bulk:
        #     delay: 5
        #     size: 1000
        #
        #   authentication:
        #     username: elastic
        #     password: changeme
        #
        #   index:
        #     prefix: zeebe-record
        #     createTemplate: true
        #
        #     command: false
        #     event: true
        #     rejection: false
        #
        #     deployment: true
        #     error: true
        #     incident: true
        #     job: true
        #     jobBatch: false
        #     message: false
        #     messageSubscription: false
        #     variable: true
        #     variableDocument: true
        #     workflowInstance: true
        #     workflowInstanceCreation: false
        #     workflowInstanceSubscription: false
        #
        #     ignoreVariablesAbove: 32677

The template for the broker node (without embedded gateway) is pretty much the same. The only difference is that the embedded gateway is disabled and the corresponding configuration details are absent.