当前位置: 首页 > 知识库问答 >
问题:

亚马逊消息队列服务(SQS)发送和确认

韩涵衍
2023-03-14

脚本

弹性beanstalk环境有几个web服务器,这些服务器向另一个工作环境发送用户注册请求等。

问题:

当其中一台工作机器完成任务时,我还希望它向web服务器发送确认信息。

SQS似乎没有"确认"消息。

当我们卸载一个发送电子邮件的任务时,我也想让网络服务器知道发送电子邮件是成功的。

我可以做的一个解决方案是实现web服务器轮询的另一个队列,但是,许多服务器可以在同一个队列上轮询,服务器2可以接收对服务器1的确认,我们需要等待消息超时,但是服务器3可能会截获消息。服务器1可能需要等待一段时间才能得到确认。

共有1个答案

耿永寿
2023-03-14

工作机器“确认”处理消息的方式是从队列中删除消息。队列消息的生命周期是:

  1. Web服务器发送了一条带有请求的消息。
  2. 工人收到消息。
  3. Worker成功处理消息。
  4. 工作器删除消息。

正在删除的消息是对其已成功处理的确认。

如果工作人员在步骤4中没有删除消息,那么消息将在指定的超时后重新出现在队列中,下一个检查消息的工作人员将获取并处理它。

如果您担心一条消息可能无法处理,并且会永远出现在队列中,那么可以设置一个“死信”队列。在收到指定次数但从未删除的消息后,该消息将被传输到死信队列,您可以在该队列中处理这些异常情况。

Amazon的Simple Queue Service Developer Guide(简单队列服务开发人员指南)很好、清晰地解释了这个生命周期,以及如何确保每个消息都被处理或移动到死信队列以进行特殊处理。

 类似资料:
  • 我正在尝试开发这个AWS请求的后续程序:https://docs.AWS.amazon.com/general/latest/gr/sigv4-signed-request-examples.html 当您“按原样”执行时,它可以工作,但我正试图从该脚本发送一个SMS,并且不断得到“签名不匹配”响应(HTTP 403): 现在,我在(默认)Python脚本中更改的只是这一部分(当然,没有公开我的电

  • 亚马逊网络服务(AWS)是亚马逊的云网络托管平台,提供灵活,可靠,可扩展,易于使用且经济高效的解决方案。

  • 我有50KAWS Lambda实例同时运行,它们都向SQS FIFO队列发送消息。 我想知道每秒可以发送到SQS FIFO队列的最大消息数是多少? 我在AWS文档中找不到这样的信息。

  • 在从CLI或AWS控制台为httpendpoint创建新的SNS订阅后,我从Amazon收到确认订阅的请求。我的代码执行确认,然后我从Amazon得到响应,即订阅已用subscriptionarn成功确认。同样在AWS控制台中,我看到订阅被确认。 但几秒钟后,我收到了另一个来自亚马逊的确认请求。脚本试图处理它,但Amazon发送了一个错误消息。而这又重复了好几次。 为什么亚马逊在确认后还会发送确认

  • 我有一个连接到lambda的队列(fifo)。我想在lambda中向标准队列发送一条消息。但没有发送/接收任何消息。然而,如果我尝试从非SQS连接的lambda(通过AppSync)发送它,它会工作。 我查过: lambda有权发送SQS消息(您可以在那里看到) 由于我已成功地从另一个lambda(非SQS)向标准队列发送消息,因此正确配置了标准队列 SQS URL是否正确 控制台中不会显示任何错

  • 我刚刚开始使用AWS EC2。我明白EC2就像一台远程计算机,在那里我可以做几乎所有我想做的事情。然后我发现了ECS的事。我知道它使用Docker,但我对这两者之间的关系感到困惑。 ECS只是EC2中的Docker安装吗?如果我已经有一个EC2并且我启动了一个ECS,这是否意味着我有两个实例?