如何有效管理两个ec2实例侦听的队列事务

时间:2018-06-22 18:10:27

标签: amazon-web-services amazon-ec2 amazon-sqs

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

1 个答案:

答案 0 :(得分:1)

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

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

应用程序随后可以请求从队列中接收一条消息。这会使消息在应用程序处理消息时不可见。一旦应用程序完成了对消息的处理,即可通知SQS从队列中删除消息。如果应用程序在处理消息时失败,则Amazon SQS将在一段时间后再次使消息可见,以便其他应用程序服务器可以对其进行处理。

注意事项:

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