原创,作者深夜踩坑不易,如需转载请注明出处,谢谢~
第一步:创建一个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
查看评论