java - Amazon SQS 队列轮询 Spring Boot
问题描述
所以我是 Amazon SQS 的新手,我看了一些教程,提到队列中的消息不会被删除,它们会保留在队列中(保留期由我们设置),存在可见性超时,如果一个消费者是消费该消息的其他消费者将不得不等到可见性超时结束。在可见性超时结束后,其他消费者可以访问该消息。
现在在另一个教程中,一个人使用 SQSListner 消费了消息,它是一个 spring boot 应用程序,消费后,消息自动从队列中删除,这是怎么回事?
@SqsListener("javatechie-queue")
public void loadMessageFromSQS(String message) {
logger.info("message from SQS Queue {}",message);
}
解决方案
是一个spring boot app,消费完后,消息自动从队列中删除。这是怎么发生的?
Amazon SQS Java V2 API 还提供了一种方法,可让您使用 Java 逻辑从队列中清除消息,如下所示:
public void purgeMyQueue() {
SqsClient sqsClient = getClient();
GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder()
.queueName(QUEUE_NAME)
.build();
PurgeQueueRequest queueRequest = PurgeQueueRequest.builder()
.queueUrl(sqsClient.getQueueUrl(getQueueRequest).queueUrl())
.build();
sqsClient.purgeQueue(queueRequest);
}
因此,您可以使用此逻辑清除应用程序中的队列。如果您想了解如何在 Spring Boot 应用程序中使用 Amazon SQS Java API,请参阅此 AWS 教程:
推荐阅读
- jwt - JWT 令牌未过期
- r - R - 在数据框列表上使用异常值函数
- jms - 复制 ActiveMQ 共享数据库
- angular - 如何为 Spring Boot 和 Angular 应用程序提供外部 API/URL?
- javascript - 如何在模板中将 ref 从父组件传递给子组件
- python - 在 pyautogui 安装期间出现错误“TypeError:'encoding' is an invalid keyword argument for this function”
- r - 如何将属于一组的元素排列在一行中
- asp.net-mvc-5 - 从使用 epplus 生成的不是网格线的 excel 中删除不需要的水平蓝线
- powershell - 逐行检查文件内容
- tensorflow - 更改 vggface 预保留模型的输入大小