Using vertx-client for AWS SDK v2
This project provides a VertxNioAsyncHttpClient
and a VertxExecutor
so that you can use AWS SDK v2 (async, non-blocking)
in a Vert.x application.
The Javadoc.
Using maven:
<dependency>
<groupId>io.reactiverse</groupId>
<artifactId>aws-sdk</artifactId>
<version>1.0.0</version>
</dependency>
Using Gradle:
implementation("io.reactiverse:aws-sdk:1.0.0")
Given context
is a Vert.x Context
object (either obtained by vertx.getOrCreateContext()
or from
a AbstractVerticle.init
method), you can use VertxSdkClient::withVertx
utility method to create a client:
DynamoDbAsyncClient dynamo = VertxSdkClient.withVertx( // use the provided utility method
DynamoDbAsyncClient.builder() // with the traditional AwsAsyncClientBuilder you're used to
.region(Region.EU_WEST_1) // that you'll confiugure as usual
, context) // and provide a Vert.x context (the one from within your Verticle for example)
.build(); // then build it => you'll have a Vert.x compatible AwsAsyncClient
Under the hood, it’s gonna do the following:
return builder
.httpClient(new VertxNioAsyncHttpClient(context)) // uses Vert.x's HttpClient to make call to AWS services
.asyncConfiguration(conf -> // tells AWS to execute response callbacks in a Vert.x context
conf.advancedOption(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR, new VertxExecutor(context))
);
VertxNioAsyncHttpClient
takes care of making HTTP calls through Vert.x’s http clientVertxExecutor
provides Vert.x Context
to CompletableFuture
s. (see: Vert.x contract regarding contexts and callbacks)You can then use your DynamoDbAsyncClient
as you’re used to with AWS SDK.
You can have a look at integration tests to get many examples.