首页 > 解决方案 > 如何有效管理两个ec2实例监听的队列事务

问题描述

我已经制作了两个 ec2 实例来监听一个特定的 aws sqs 队列。现在两个实例都通过负载均衡器连接。问题是,由于两个实例都在同一个队列上侦听,所以两个实例不会同时接收到消息。如果两个实例同时收到,如何防止重复交易?

标签: amazon-web-servicesamazon-ec2amazon-sqs

解决方案


您的架构没有描述 Amazon SQS 的正常使用模式。

Amazon Simple Queue Service (SQS)是一种队列服务,您可以在其中创建队列并将消息发送到队列。Amazon SQS 将消息最多保留 14 天。

然后应用程序可以请求从队列中接收消息。这使得消息在应用程序处理消息时不可见。一旦应用程序处理完消息,to 告诉 SQS从队列中删除消息。如果应用程序在处理消息时失败,Amazon SQS 将在一段时间后再次显示该消息,以便其他应用程序服务器可以处理该消息。

注意事项:

  • SQS不发送消息。相反,应用程序请求从队列接收消息。将应用程序视为“检索”消息,而不是 SQS 传输消息。
  • 检索消息的实例不应位于负载均衡器后面。在此过程中没有任何内容发送到负载均衡器。相反,实例本身连接到 SQS 并请求消息。
  • 如果您希望同时向多个系统发送消息,可以使用Amazon Simple Notification Service (SNS)

推荐阅读