關於Aws SQS的使用 小結

1. 首先,需要簡單瞭解下關於SQS的官方介紹

2. 官方提供了兩個版本的,下載源碼後可以很方便地找到example,至少大部分是可以的。

3. 以下是總結使用javav2版本的SQS使用,AWS官網例子也有介紹。

1) 首先導入依賴:

<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>aws-query-protocol</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>protocol-core</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>profiles</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>sdk-core</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>utils</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>auth</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>regions</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>http-client-spi</artifactId>
	<version>2.3.7</version>
</dependency>
<dependency>
	<groupId>software.amazon.awssdk</groupId>
	<artifactId>apache-client</artifactId>
	<version>2.3.7</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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章