CheckpointConfig.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.spring.integration.core.api;
import java.time.Duration;
/**
* Checkpoint related config.
*
* @author Warren Zhu
*/
public class CheckpointConfig {
private final CheckpointMode checkpointMode;
/**
* The count of message to trigger checkpoint. Only used when {@link CheckpointMode#PARTITION_COUNT}
*/
private final int checkpointCount;
/**
* The time interval to trigger checkpoint. Only used when {@link CheckpointMode#TIME}
*/
private final Duration checkpointInterval;
public CheckpointConfig(CheckpointMode checkpointMode, int checkpointCount, Duration checkpointInterval) {
this.checkpointMode = checkpointMode;
this.checkpointCount = checkpointCount;
this.checkpointInterval = checkpointInterval;
}
public static CheckpointConfigBuilder builder() {
return new CheckpointConfigBuilder();
}
public CheckpointMode getCheckpointMode() {
return checkpointMode;
}
public int getCheckpointCount() {
return checkpointCount;
}
public Duration getCheckpointInterval() {
return checkpointInterval;
}
@Override
public String toString() {
return "CheckpointConfig{" + "checkpointMode=" + checkpointMode
+ ", checkpointCount=" + checkpointCount
+ ", checkpointInterval=" + checkpointInterval + '}';
}
/**
* Builder class for {@link CheckpointConfig}.
*/
public static class CheckpointConfigBuilder {
private CheckpointMode checkpointMode;
private int checkpointCount;
private Duration checkpointInterval;
public CheckpointConfigBuilder checkpointMode(CheckpointMode checkpointMode) {
this.checkpointMode = checkpointMode;
return this;
}
public CheckpointConfigBuilder checkpointCount(int checkpointCount) {
this.checkpointCount = checkpointCount;
return this;
}
public CheckpointConfigBuilder checkpointInterval(Duration checkpointInterval) {
this.checkpointInterval = checkpointInterval;
return this;
}
public CheckpointConfig build() {
return new CheckpointConfig(checkpointMode, checkpointCount, checkpointInterval);
}
}
}