Back to Garden
Guides|June 7, 2023

How to Integrate Amazon SQS with Spring Boot: A Step-by-Step Guide

#Java#SpringBoot#AWS#Messaging

First, sign up for an AWS account if you don’t already have one. Then, navigate to the SQS dashboard and create a new queue.

First, sign up for an AWS account if you don’t already have one. Then, navigate to the SQS dashboard and create a new queue.

Next, you’ll need to set up your Spring Boot application to use the AWS SDK for Java. In your “pom.xml” file, add the following dependency:

<dependency>  
    <groupId>com.amazonaws</groupId>  
    <artifactId>aws-java-sdk-sqs</artifactId>  
</dependency>

In your “application.properties”, add the following properties to specify your AWS access key and secret key:

aws.accessKeyId\=YOUR_ACCESS_KEY  
aws.secretKey\=YOUR_SECRET_KEY  
aws.region\=YOUR_REGION  
aws.queueName\=YOUR_QUEUE_NAME

Create a configuration class to configure the AWS SDK and create a client for interacting with SQS. In this class, you’ll need to specify the region where your queue was created and the name of the queue:

@Configuration  
public class SqsConfig {  
    @Value("${aws.accessKeyId}")  
    private String accessKey;  
    @Value("${aws.secretKey}")  
    private String secretKey;  
    @Value("${sqs.region}")  
    private String region;  
    @Value("${sqs.queueName}")  
    private String queueName;  
    @Bean  
    public AmazonSQSAsync amazonSQSAsync() {  
        BasicAWSCredentials credentials \= new BasicAWSCredentials(accessKey, secretKey);  
        AmazonSQSAsyncClientBuilder builder \= AmazonSQSAsyncClientBuilder.standard()  
                .withCredentials(new AWSStaticCredentialsProvider(credentials))  
                .withRegion(region);  
        return builder.build();  
    }  
    @Bean  
    public QueueMessagingTemplate queueMessagingTemplate(AmazonSQSAsync amazonSqs) {  
        return new QueueMessagingTemplate(amazonSqs);  
    }  
}

Now you’re ready to use the SQS client in your code. Inject the “QueueMessagingTemplate” bean into your class and use it to send messages to and receive messages from your SQS queue.

For example, here’s how you can send a message to the queue:

@Autowired  
private QueueMessagingTemplate messagingTemplate;  
public void sendMessage(String message) {  
    messagingTemplate.convertAndSend(queueName, message);  

}

And here’s how you can receive a message from the queue:

@SqsListener(value = "${sqs.queueName}", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)  
public void receiveMessage(String message) {  
    // do something with the message  

}

That’s it! You can now use SQS in your Spring Boot application to communicate with other parts of your system asynchronously.

I hope this tutorial was helpful. Let me know if you have any questions.