在Amazon标准SQS中,使用消息轮询可以接收和处理消息。下面是一个使用Java代码的示例:
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.*;
public class SQSMessagePollingExample {
public static void main(String[] args) {
// 创建SQS客户端
SqsClient sqsClient = SqsClient.builder()
.region(Region.US_WEST_2)
.credentialsProvider(DefaultCredentialsProvider.create())
.build();
// 设置队列URL
String queueUrl = "https://sqs.us-west-2.amazonaws.com/123456789012/my-queue";
// 设置最大消息数量
int maxNumberOfMessages = 10;
// 轮询接收消息
while (true) {
ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder()
.queueUrl(queueUrl)
.maxNumberOfMessages(maxNumberOfMessages)
.build();
// 接收消息
ReceiveMessageResponse receiveMessageResponse = sqsClient.receiveMessage(receiveMessageRequest);
// 处理消息
for (Message message : receiveMessageResponse.messages()) {
System.out.println("Received message: " + message.body());
// 处理完消息后,删除消息
DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder()
.queueUrl(queueUrl)
.receiptHandle(message.receiptHandle())
.build();
sqsClient.deleteMessage(deleteMessageRequest);
}
}
}
}
上述代码创建了一个SQS客户端,并设置了队列的URL和最大消息数量。然后,通过循环调用receiveMessage方法来接收消息,并对每个接收到的消息进行处理。处理完消息后,使用deleteMessage方法删除消息。
请注意,上述示例使用了AWS SDK for Java v2。如果您使用的是v1版本的SDK,请使用相应的类和方法来实现相同的功能。