Objetivo do projeto
O projeto criado mostra como é simples fazer uma chamada dentro do Java, mesmo sem um framework como Spring Boot ou Quarkus. Através dele foi possível verificar com a própria AWS sobre tempo de salvar e recuperar um dado através do DAX.
Pré requisitos
- Java 11
- Maven
Configuração inicial
Para fazer a configuração é importante adicionar no projeto do Maven as seguintes dependências:
- amazon-dax-client
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>amazon-dax-client</artifactId>
<version>1.0.221844.0</version>
</dependency>
- amazon-dax-client
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>amazon-dax-client</artifactId>
<version>1.0.221844.0</version>
</dependency>
- aws-java-sdk-bom
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.11.889</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Notem que pode ser adicionado o valor 1.11.889
como variável de propriedade para evitar a repetição.
O projeto
Agora o projeto vai ser dividido em MainClass que vai ter os códigos que não tem ligação com o Client do DynamoDB. A segunda classe será DynamoClientHelper que possui as chamadas para construir o cliente e executar as ações no Dynamo.
MainClass
A MainClass pode ser substituído por uma classe sua como um serviço que vai consultar o DynamoDB para tomar decisões. Como foi feito nesta classe as chamadas o cliente os parâmetros como accessKey e secretKey foram repassados via argumentos.
Caso queira rodar o projeto sem alterações os parameters devem ficar na seguinte ordem:
"NOME_DA_TABELA" "ACCESS_KEY" "SECRET_KEY" "DAX_ENDPOINT"
DynamoClientHelper
O client irá realizar tem os métodos para interagir com o DynamoDB, como:
-
getDaxClient Recebe a url de endpoint do Dax e devolve um DynamoClient que é utilizado para operações.
-
getDynamoClient Recebe as credenciais da AWS para conectar ao DynamoDB da conta e retorna um client.
-
writeData Recebe a nome da tabela a ser utilizada, um client que foi gerado, e o JSON de data.
-
retrieveItem Recebe a nome da tabela a ser utilizada, um client que foi gerado, e o ID do ‘item’ a ser retornado.
-
queryIndexCount Recebe a nome da tabela a ser utilizada, um client que foi gerado, o nome do index, e ucode para value na query, retorna quantidade de itens no index.
-
deleteItem Recebe a nome da tabela a ser utilizada, um client que foi gerado, e o ID do item a ser deletado.
Conclusão
Apesar de ser muito simples o client criado, através dele foi possível fazer alguns testes, e verificar o tempo que é gasto pelo DAX quando um item é inserido até que ele apareça na busca via index. Além disto pode ser feita algumas melhorias em que é colocado o DAX como client principal e caso falhe chame o via outra opção. Coisa importante é que através desse client já é possível fazer o update, utilizando o método writeData utilizando o mesmo ID.
Alterando poucas coisas no client já temos um CRUD completo e atender vários requisitos.
Want to follow me?
You can get in contact me on this social media.
GitHub: luizleite-hotmart
Twitter: luizleite_
Twitch: coffee_and_code
Linkedin: luizleiteoliveira