blob: 2dd1c7ca45e56430fdfbaadb151357820bacd76c [file] [log] [blame]
package org.apache.james.backends.rabbitmq;
import com.google.common.collect.ImmutableMap;
public class QueueArguments {
public static class Builder {
@FunctionalInterface
public interface RequiresReplicationFactor {
Builder replicationFactor(int replicationFactor);
}
private final ImmutableMap.Builder<String, Object> arguments;
public Builder() {
arguments = ImmutableMap.builder();
}
public RequiresReplicationFactor quorumQueue() {
arguments.put("x-queue-type", "quorum");
return this::replicationFactor;
}
private Builder replicationFactor(int replicationFactor) {
arguments.put("x-quorum-initial-group-size", replicationFactor);
return this;
}
public Builder deadLetter(String deadLetterQueueName) {
arguments.put("x-dead-letter-exchange", deadLetterQueueName);
return this;
}
public Builder queueTTL(long queueTTL) {
arguments.put("x-expires", queueTTL);
return this;
}
public ImmutableMap<String, Object> build() {
return arguments.build();
}
}
public static final ImmutableMap<String, Object> NO_ARGUMENTS = ImmutableMap.of();
public static Builder builder() {
return new Builder();
}
}