All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.camunda.zeebe.broker.system.configuration.ProcessingCfg Maven / Gradle / Ivy

There is a newer version: 8.7.0-alpha1
Show newest version
/*
 * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
 * one or more contributor license agreements. See the NOTICE file distributed
 * with this work for additional information regarding copyright ownership.
 * Licensed under the Camunda License 1.0. You may not use this file
 * except in compliance with the Camunda License 1.0.
 */
package io.camunda.zeebe.broker.system.configuration;

import java.time.Duration;
import java.util.Set;

public final class ProcessingCfg implements ConfigurationEntry {

  private static final int DEFAULT_PROCESSING_BATCH_LIMIT = 100;
  private Integer maxCommandsInBatch = DEFAULT_PROCESSING_BATCH_LIMIT;
  private boolean enableAsyncScheduledTasks = true;
  private Duration scheduledTaskCheckInterval = Duration.ofSeconds(1);
  private Set skipPositions;

  @Override
  public void init(final BrokerCfg globalConfig, final String brokerBase) {
    if (maxCommandsInBatch < 1) {
      throw new IllegalArgumentException(
          "maxCommandsInBatch must be >= 1 but was %s".formatted(maxCommandsInBatch));
    }
    if (!scheduledTaskCheckInterval.isPositive()) {
      throw new IllegalArgumentException(
          "scheduledTaskCheckInterval must be positive but was %s"
              .formatted(scheduledTaskCheckInterval));
    }
  }

  public int getMaxCommandsInBatch() {
    return maxCommandsInBatch;
  }

  public void setMaxCommandsInBatch(final int maxCommandsInBatch) {
    this.maxCommandsInBatch = maxCommandsInBatch;
  }

  public boolean isEnableAsyncScheduledTasks() {
    return enableAsyncScheduledTasks;
  }

  public void setEnableAsyncScheduledTasks(final boolean enableAsyncScheduledTasks) {
    this.enableAsyncScheduledTasks = enableAsyncScheduledTasks;
  }

  public Set skipPositions() {
    return skipPositions != null ? skipPositions : Set.of();
  }

  public void setSkipPositions(final Set skipPositions) {
    this.skipPositions = skipPositions;
  }

  @Override
  public String toString() {
    return "ProcessingCfg{"
        + "maxCommandsInBatch="
        + maxCommandsInBatch
        + ", enableAsyncScheduledTasks="
        + enableAsyncScheduledTasks
        + ", scheduledTaskCheckInterval="
        + scheduledTaskCheckInterval
        + '}';
  }

  public Duration getScheduledTaskCheckInterval() {
    return scheduledTaskCheckInterval;
  }

  public void setScheduledTaskCheckInterval(final Duration scheduledTaskCheckInterval) {
    this.scheduledTaskCheckInterval = scheduledTaskCheckInterval;
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy