关于Aws SQS的使用 小结

本文详细介绍了如何使用Java V2 SDK与Amazon Simple Queue Service (SQS)进行交互,包括设置依赖、创建工具类、发送、接收及删除消息等核心功能,并提到了在EC2上使用CLI进行操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 首先,需要简单了解下关于SQS的官方介绍

2. 官方提供了两个版本的,下载源码后可以很方便地找到example,至少大部分是可以的。

3. 以下是总结使用javav2版本的SQS使用,AWS官网例子也有介绍。

1) 首先导入依赖:

<dependency>
  <groupId>software.amazon.awssdk</groupId>
  <artifactId>sqs</artifactId>      
</dependency>

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.6</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpcore</artifactId>
  <version>4.4.10</version>
  <scope>runtime</scope>
</dependency>
<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.2</version>
</dependency>

2) 假设创建一个工具类,SqsUtil:

package com.bas.util;

import org.apache.commons.lang3.StringUtils;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;

import java.util.List;

public class SqsUtil {

    public static SqsClient builder(String regionStr) {
        Region region = Region.US_EAST_1;//default region
        if(StringUtils.isNotEmpty(regionStr)) {
            region = Region.of(regionStr);
        }
        return SqsClient.builder().region(region).build();
    }
	
    public static void main(String[] args) {

    }

}

3) 因为queue的url可以直接取得,所以可以直接使添加接口发送消息:

public static void sendMessageWithUrl(SqsClient sqsClient, String queueUrl, String message) {
	SendMessageRequest send_msg_request = SendMessageRequest.builder()
			.queueUrl(queueUrl)
			.messageBody(message)
			.delaySeconds(5)
			.build();
	sqsClient.sendMessage(send_msg_request);
}

4) 添加删除消息功能:

public static void deleteMessageWithUrl(SqsClient sqsClient, String queueUrl, Message message) {
	DeleteMessageRequest deleteRequest = DeleteMessageRequest.builder()
			.queueUrl(queueUrl)
			.receiptHandle(message.receiptHandle())
			.build();
	sqsClient.deleteMessage(deleteRequest);
}

5) 添加接收消息功能:

public static List<Message> receiveMessageWithUrl(SqsClient sqsClient, String queueUrl, int maxNumberOfMessages) {
	ReceiveMessageRequest receiveRequest = ReceiveMessageRequest.builder()
			.queueUrl(queueUrl)
			.maxNumberOfMessages(maxNumberOfMessages)
			.build();
	return sqsClient.receiveMessage(receiveRequest).messages();
}

 

1. 在使用过程中,Sqs可能会有延迟,比如说send了一条message,如果立刻获取消息可能会获取不了,同理,删除消息后立刻获取消息也会如此。

 

附:

1. 在EC2上也可以使用cli来进行操作,命令可以参考:https://docs.aws.amazon.com/cli/latest/reference/sqs/index.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值