Skip to content

Commit b4b57b0

Browse files
authored
fixes #141 add maxRetries to the configuration for lambda invoker (#142)
1 parent e5372c5 commit b4b57b0

3 files changed

Lines changed: 25 additions & 0 deletions

File tree

lambda-invoker/src/main/java/com/networknt/aws/lambda/LambdaFunctionHandler.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
2424
import software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient;
2525
import software.amazon.awssdk.regions.Region;
26+
import software.amazon.awssdk.retries.DefaultRetryStrategy;
2627
import software.amazon.awssdk.services.lambda.LambdaAsyncClient;
2728
import software.amazon.awssdk.services.lambda.model.InvokeRequest;
2829

@@ -58,6 +59,14 @@ public LambdaFunctionHandler() {
5859
.apiCallAttemptTimeout(Duration.ofSeconds(config.getApiCallAttemptTimeout()))
5960
.build();
6061

62+
if(config.getMaxRetries() > 0) {
63+
overrideConfig = overrideConfig.toBuilder()
64+
.retryStrategy(DefaultRetryStrategy.standardStrategyBuilder()
65+
.maxAttempts(config.getMaxRetries())
66+
.build())
67+
.build();
68+
}
69+
6170
var builder = LambdaAsyncClient.builder().region(Region.of(config.getRegion()))
6271
.httpClient(asyncHttpClient)
6372
.overrideConfiguration(overrideConfig);

lambda-invoker/src/main/java/com/networknt/aws/lambda/LambdaInvokerConfig.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class LambdaInvokerConfig {
2222
private static final String FUNCTIONS = "functions";
2323
private static final String METRICS_INJECTION = "metricsInjection";
2424
private static final String METRICS_NAME = "metricsName";
25+
private static final String MAX_RETRIES = "maxRetries";
2526
private static final String MAX_CONCURRENCY = "maxConcurrency";
2627
private static final String MAX_PENDING_CONNECTION_ACQUIRES = "maxPendingConnectionAcquires";
2728
private static final String CONNECTION_ACQUISITION_TIMEOUT = "connectionAcquisitionTimeout";
@@ -34,6 +35,7 @@ public class LambdaInvokerConfig {
3435
private Map<String, String> functions;
3536
private boolean metricsInjection;
3637
private String metricsName;
38+
private int maxRetries;
3739
private int maxConcurrency;
3840
private int maxPendingConnectionAcquires;
3941
private int connectionAcquisitionTimeout;
@@ -102,6 +104,14 @@ public void setMetricsName(String metricsName) {
102104
this.metricsName = metricsName;
103105
}
104106

107+
public int getMaxRetries() {
108+
return maxRetries;
109+
}
110+
111+
public void setMaxRetries(int maxRetries) {
112+
this.maxRetries = maxRetries;
113+
}
114+
105115
public int getMaxConcurrency() {
106116
return maxConcurrency;
107117
}
@@ -192,6 +202,10 @@ private void setConfigData() {
192202
if(object != null ) {
193203
metricsName = (String)object;
194204
}
205+
object = mappedConfig.get(MAX_RETRIES);
206+
if (object != null) {
207+
maxRetries = Config.loadIntegerValue(MAX_RETRIES, object);
208+
}
195209
object = mappedConfig.get(MAX_CONCURRENCY);
196210
if (object != null) {
197211
maxConcurrency = Config.loadIntegerValue(MAX_CONCURRENCY, object);

lambda-invoker/src/main/resources/config/lambda-invoker.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ endpointOverride: ${lambda-invoker.endpointOverride:}
77
apiCallTimeout: ${lambda-invoker.apiCallTimeout:60000}
88
# Api call attempt timeout in milliseconds. This sets the amount of time for each individual attempt.
99
apiCallAttemptTimeout: ${lambda-invoker.apiCallAttemptTimeout:20000}
10+
# The maximum number of retries for the Lambda function invocation. Default is 3. Set to 0 to disable retries.
11+
maxRetries: ${lambda-invoker.maxRetries:3}
1012
# The maximum number of concurrent requests that can be made to Lambda. Default is 50.
1113
maxConcurrency: ${lambda-invoker.maxConcurrency:50}
1214
# The maximum number of pending acquires allowed. Default is 10000.

0 commit comments

Comments
 (0)