File tree Expand file tree Collapse file tree
lambda/java/JavaLambda/src/main/java/alex9smith Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33## Lambdas
44
5- - Use futures / async to write to DynamoDB concurrently in the Rust & Java lambdas
5+ - Use futures / async to write to DynamoDB concurrently in the Rust lambda
66
77## Benchmark
88
Original file line number Diff line number Diff line change 11package alex9smith ;
22
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+ import java .util .concurrent .CompletableFuture ;
6+
37import com .amazonaws .services .lambda .runtime .Context ;
48import com .amazonaws .services .lambda .runtime .RequestHandler ;
59import com .amazonaws .services .lambda .runtime .events .SQSEvent ;
@@ -80,6 +84,7 @@ public App() {
8084
8185 @ Override
8286 public SQSEvent handleRequest (final SQSEvent input , final Context context ) {
87+ ArrayList <CompletableFuture <PutItemResponse >> futures = new ArrayList <>();
8388 for (SQSMessage message : input .getRecords ()) {
8489 try {
8590 jsonSchema .validate (message .getBody (), InputFormat .JSON );
@@ -88,7 +93,7 @@ public SQSEvent handleRequest(final SQSEvent input, final Context context) {
8893 .tableName (tableName )
8994 .item (event .toAttributeMap ())
9095 .build ();
91- dynamoDbClient .putItem (request ). join ( );
96+ futures . add ( dynamoDbClient .putItem (request ));
9297
9398 } catch (JsonProcessingException e ) {
9499 e .printStackTrace ();
@@ -97,6 +102,9 @@ public SQSEvent handleRequest(final SQSEvent input, final Context context) {
97102
98103 }
99104
105+ List <PutItemResponse > results = futures .stream ().map (CompletableFuture ::join ).toList ();
106+ System .out .println (results .size ());
107+
100108 return input ;
101109 }
102110}
You can’t perform that action at this time.
0 commit comments