-
Notifications
You must be signed in to change notification settings - Fork 214
/
DistributedDataConfig.java
134 lines (109 loc) · 3.57 KB
/
DistributedDataConfig.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* Copyright (c) 2019 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.internal.utils.ddata;
import java.time.Duration;
import javax.annotation.concurrent.Immutable;
import org.eclipse.ditto.internal.utils.config.KnownConfigValue;
import org.apache.pekko.cluster.ddata.Replicator;
/**
* Provides configuration settings for {@link DistributedData}.
*/
@Immutable
public interface DistributedDataConfig {
/**
* Returns the timeout of GET-messages of the replicator.
*
* @return the timeout of reads.
*/
Duration getReadTimeout();
/**
* Returns the timeout of UPDATE-messages of the replicator.
*
* @return the timeout of writes.
*/
Duration getWriteTimeout();
/**
* Returns the write consistency for topic subscription.
*
* @return the write consistency.
*/
Replicator.WriteConsistency getSubscriptionWriteConsistency();
/**
* Returns the delay for subscriptions.
*
* @return the subscription delay.
*/
Duration getSubscriptionDelay();
/**
* Returns the config to use for creating the {@link org.apache.pekko.cluster.ddata.Replicator}.
*
* @return the Pekko replicator config to use.
*/
PekkoReplicatorConfig getPekkoReplicatorConfig();
/**
* The number of shards Ditto's ddata extension applies for Map keys.
*
* @return the number of shards to apply.
*/
int getNumberOfShards();
/**
* The number of subscribers in each subscriber pool.
*
* @return the number of subscribers.
*/
int getSubscriberPoolSize();
/**
* An enumeration of the known config path expressions and their associated default values for
* {@code DistributedDataConfig}.
*/
enum DistributedDataConfigValue implements KnownConfigValue {
/**
* The read timeout duration: the timeout of GET-messages of the replicator.
*/
READ_TIMEOUT("read-timeout", Duration.ofSeconds(5)),
/**
* The write timeout duration: the timeout of UPDATE-messages of the replicator.
*/
WRITE_TIMEOUT("write-timeout", Duration.ofSeconds(25)),
/**
* The write consistency of subscriptions.
*/
SUBSCRIPTION_WRITE_CONSISTENCY("subscription-write-consistency", "all"),
/**
* Local delay for topic subscription to account for replication and notification delay.
*/
SUBSCRIPTION_DELAY("subscription-delay", Duration.ofSeconds(2L)),
/**
* The number of shards Ditto's ddata extension applies for Map keys.
*/
NUMBER_OF_SHARDS("number-of-shards", 5),
/**
* The number of subscribers in each subscriber pool.
*/
SUBSCRIBER_POOL_SIZE("subscriber-pool-size", 1);
private final String path;
private final Object defaultValue;
DistributedDataConfigValue(final String thePath, final Object theDefaultValue) {
path = thePath;
defaultValue = theDefaultValue;
}
@Override
public String getConfigPath() {
return path;
}
@Override
public Object getDefaultValue() {
return defaultValue;
}
}
}