Skip to content

Commit cfa9c8e

Browse files
feat: adding sqs send and listener for tests
1 parent 6341ea2 commit cfa9c8e

File tree

7 files changed

+109
-4
lines changed

7 files changed

+109
-4
lines changed

pom.xml

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,25 @@
1616
<description>FIAP SOAT1 2023 - Group 63 - Phase 4</description>
1717
<properties>
1818
<java.version>17</java.version>
19+
<aws.sdk.version>1.12.674</aws.sdk.version>
1920
</properties>
2021
<repositories>
2122
<repository>
2223
<id>jitpack.io</id>
2324
<url>https://jitpack.io</url>
2425
</repository>
2526
</repositories>
27+
<dependencyManagement>
28+
<dependencies>
29+
<dependency>
30+
<groupId>io.awspring.cloud</groupId>
31+
<artifactId>spring-cloud-aws-dependencies</artifactId>
32+
<version>3.0.0</version>
33+
<type>pom</type>
34+
<scope>import</scope>
35+
</dependency>
36+
</dependencies>
37+
</dependencyManagement>
2638
<dependencies>
2739
<dependency>
2840
<groupId>org.springframework.boot</groupId>
@@ -36,6 +48,14 @@
3648
<groupId>org.springframework.boot</groupId>
3749
<artifactId>spring-boot-starter-validation</artifactId>
3850
</dependency>
51+
<dependency>
52+
<groupId>io.awspring.cloud</groupId>
53+
<artifactId>spring-cloud-aws-starter</artifactId>
54+
</dependency>
55+
<dependency>
56+
<groupId>io.awspring.cloud</groupId>
57+
<artifactId>spring-cloud-aws-starter-sqs</artifactId>
58+
</dependency>
3959
<dependency>
4060
<groupId>org.springframework.boot</groupId>
4161
<artifactId>spring-boot-devtools</artifactId>
@@ -85,7 +105,12 @@
85105
<dependency>
86106
<groupId>com.amazonaws</groupId>
87107
<artifactId>aws-java-sdk-dynamodb</artifactId>
88-
<version>1.12.641</version>
108+
<version>${aws.sdk.version}</version>
109+
</dependency>
110+
<dependency>
111+
<groupId>com.amazonaws</groupId>
112+
<artifactId>aws-java-sdk-sqs</artifactId>
113+
<version>${aws.sdk.version}</version>
89114
</dependency>
90115
<dependency>
91116
<groupId>com.github.derjust</groupId>

src/main/java/br/com/grupo63/serviceproduction/api/controller/status/StatusAPIController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import br.com.grupo63.techchallenge.common.api.controller.AbstractAPIController;
77
import br.com.grupo63.techchallenge.common.exception.NotFoundException;
88
import br.com.grupo63.techchallenge.common.exception.ValidationException;
9+
import io.awspring.cloud.sqs.operations.SqsTemplate;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.Parameter;
1112
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -22,6 +23,15 @@
2223
public class StatusAPIController extends AbstractAPIController {
2324

2425
private final StatusController controller;
26+
private final SqsTemplate sqsTemplate;
27+
28+
@GetMapping("/batata")
29+
public void batata() {
30+
sqsTemplate.send(sqsSendOptions ->
31+
sqsSendOptions
32+
.queue("approvedPayments.fifo")
33+
.payload(12));
34+
}
2535

2636
@Operation(
2737
tags = "5ª chamada - Fluxo principal - Acompanhamento e entrega",
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package br.com.grupo63.serviceproduction.api.controller.status;
2+
3+
import br.com.grupo63.serviceproduction.controller.StatusController;
4+
import com.amazonaws.services.sqs.model.Message;
5+
import io.awspring.cloud.sqs.annotation.SqsListener;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.stereotype.Component;
8+
9+
import java.util.Arrays;
10+
11+
@RequiredArgsConstructor
12+
13+
@Component
14+
public class StatusQueueController {
15+
private final StatusController controller;
16+
17+
@SqsListener(value = "approvedPayments.fifo")
18+
public void processMessage(int message) {
19+
System.err.println(message);
20+
}
21+
}

src/main/java/br/com/grupo63/serviceproduction/config/DynamoDBConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ public class DynamoDBConfig {
2828
private String amazonAWSSecretKey;
2929

3030
@Bean
31-
public AmazonDynamoDB amazonDynamoDB() {
31+
public AmazonDynamoDB amazonDynamoDB(AWSCredentials awsCredentials) {
3232
AmazonDynamoDB amazonDynamoDB
33-
= new AmazonDynamoDBClient(amazonAWSCredentials());
33+
= new AmazonDynamoDBClient(awsCredentials);
3434

3535
if (!StringUtils.isEmpty(amazonDynamoDBEndpoint)) {
3636
amazonDynamoDB.setEndpoint(amazonDynamoDBEndpoint);
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package br.com.grupo63.serviceproduction.config;
2+
3+
import io.awspring.cloud.sqs.operations.SqsTemplate;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
8+
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
9+
import software.amazon.awssdk.regions.Region;
10+
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
11+
12+
@Configuration
13+
class SQSClientConfig {
14+
15+
@Value("${spring.cloud.aws.credentials.access-key}")
16+
private String accessKey;
17+
18+
@Value("${spring.cloud.aws.credentials.secret-key}")
19+
private String secretKey;
20+
21+
@Value("${spring.cloud.aws.region.static}")
22+
private String region;
23+
24+
@Bean
25+
SqsAsyncClient sqsAsyncClient(){
26+
return SqsAsyncClient
27+
.builder()
28+
.region(Region.of(region))
29+
.credentialsProvider(StaticCredentialsProvider
30+
.create(AwsBasicCredentials.create(accessKey, secretKey)))
31+
.build();
32+
}
33+
34+
@Bean
35+
public SqsTemplate sqsTemplate(SqsAsyncClient sqsAsyncClient){
36+
return SqsTemplate.builder().sqsAsyncClient(sqsAsyncClient).build();
37+
}
38+
}

src/main/resources/application-dev.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,15 @@ spring:
1313
flyway:
1414
locations: classpath:db/migrations/{vendor}/
1515
enabled: true
16+
cloud:
17+
aws:
18+
credentials:
19+
access-key: "${AMAZON_AWS_ACCESSKEY:accesskey}"
20+
secret-key: "${AMAZON_AWS_SECRETKEY:secretkey}"
21+
region:
22+
static: "us-east-2"
23+
sqs:
24+
endpoint: "${AMAZON_AWS_SQS_ENDPOINT:endpoint}"
1625
jwt:
1726
token:
1827
key:
@@ -23,6 +32,8 @@ amazon:
2332
aws:
2433
accesskey: "${AMAZON_AWS_ACCESSKEY:accesskey}"
2534
secretkey: "${AMAZON_AWS_SECRETKEY:secretkey}"
35+
2636
server:
37+
port: 8082
2738
servlet:
2839
context-path: "/production"

src/test/java/br/com/grupo63/serviceproduction/ProductionIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void setUp() {
4545
MockitoAnnotations.openMocks(this);
4646
statusUseCase = new StatusUseCase(statusJpaAdapter);
4747
statusController = new StatusController(statusUseCase);
48-
statusAPIController = new StatusAPIController(statusController);
48+
statusAPIController = new StatusAPIController(statusController, null);
4949
}
5050

5151
@SneakyThrows

0 commit comments

Comments
 (0)