小言_互联网的博客

IDEA + Maven + AWS + SQS快速入门

271人阅读  评论(0)

原创,作者深夜踩坑不易,如需转载请注明出处,谢谢~

第一步:创建一个Maven项目

在IDEA菜单栏,点击File -》New -》Project,如下图

注意,archetype不勾。

 

GroupId和ArtifactId和Version都可根据自己需要自己修改。

 

红框内的内容根据自己需要自行修改,最后点击Finish,完成创建项目。

 

第二步:在pom.xml里添加AWS所需依赖

将以下代码添加进您的pom.xml文件里

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

注意,右下角若蹦出这个东西,选择Enable Auro-Import,这样IDEA会自动帮你下载所需依赖并导入。

最终pom.xml文件内容如下图

待右下角的下载进度条结束后,该步骤完成。

 

第三步:查看自己的AWS的Key,更新至~/.aws/credentials文件下

这一步骤很关键,如果你没有将最新的Key写入至~/.aws/credentials文件下,那么你在代码里连接AWS的时候就会报错!

 

第四步:调用AWS的SDK向消息队列发送消息以及操控队列

新建一个Java类,添加如下代码


import com.amazonaws.regions.Regions;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import com.amazonaws.services.sqs.model.*;

import java.util.*;


public class SqsUtil {

    private static AmazonSQS sqs;

    static {
        // 创建一个sqs对象,注意要指定Regions和你消息队列的地区一致
        sqs = AmazonSQSClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
    }

    /**
     * 禁用调用无参构造函数
     */
    private SqsUtil() {
    }

    /**
     * 根据Queue Name查询Url
     */
    public static String getQueueUrl(String queueName) {
        return sqs.getQueueUrl(queueName).getQueueUrl();
    }

    /**
     * 创建Queue
     */
    public static String createQueue(String queueName) {
        System.out.println("Creating a new SQS queue called " + queueName);
        CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
        return sqs.createQueue(createQueueRequest).getQueueUrl();
    }

    /**
     * 发送消息
     */
    public static void sendMessage(String queueUrl, String message) {
        System.out.println("Sending a message to " + queueUrl);
        // 声明一个发送消息的请求
        SendMessageRequest request = new SendMessageRequest();
        // 指定要将消息发送到哪个队列
        request.withQueueUrl(queueUrl);
        // 设置消息内容
        request.withMessageBody(message);
        // 发送消息
        sqs.sendMessage(request);
    }

    /**
     * 接收消息
     */
    public static void receiveMessages(String queueUrl) {
        System.out.println("Receiving messages from " + queueUrl);
        // 声明一个接收消息的请求
        ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
        // 设置一些参数
        receiveMessageRequest.setMaxNumberOfMessages(5);
        receiveMessageRequest.withWaitTimeSeconds(10);
        // 声明一个存放消息的List
        List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
        // 遍历List,打印消息内容
        for (Message message : messages) {
            System.out.println("Message: " + message.getBody());
            // 删除已被接收的消息
            System.out.println("Deleting a message.");
            sqs.deleteMessage(queueUrl, message.getReceiptHandle());
        }
    }

    /**
     * 删除Queue
     */
    public static void deleteQueue(String queueUrl) {
        System.out.println("Deleting the queue " + queueUrl);
        sqs.deleteQueue(queueUrl);
    }

}

已经注释的很详细了,所以这里就不细讲了。

 

第五步:进行测试

新建一个测试类,添加测试代码


/**
 * @author Apple_Coco
 */
public class Application {

    public static void main(String[] args) {

        // 打印一个已存在的队列的URL
        System.out.println(SqsUtil.getQueueUrl("queue_test.fifo"));

        // 创建一个标准类型的队列
        String queueUrl = SqsUtil.createQueue("test");

        // 发送Message
        for (int i = 0; i < 6; i++) {
            SqsUtil.sendMessage(queueUrl, "Hello world " + i);
        }

        // 接收Message
        for (int i = 0; i < 6; i++) {
            SqsUtil.receiveMessages(queueUrl);
        }

        // 删除刚才创建的队列
        SqsUtil.deleteQueue(queueUrl);

    }

}

点击绿色小三角运行main函数。

如果你是按照我的步骤来的,那么此刻你应该会看到自己的控制台输出了消息队列的信息。

恭喜你,已经初步学会了如何使用AWS的SQS。

如果你有什么疑惑或建议,欢迎在评论区给我留言~


转载:https://blog.csdn.net/Apple_Coco/article/details/101006204
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场