我们正在使用cloudformation模板来创建多个EC2实例。我们定义了自动缩放和ELB。每个EC2实例都使用自己的Tomcat服务器和Web应用程序运行。我们连接到SQS以从此Web应用程序中提取消息并写入RDS数据库。
问题陈述 - 我们不希望两个EC2实例从SQS中提取相同的消息并写入RDS。您能否指导我如何使这一过程高效?
答案 0 :(得分:0)
您的问题是合理的,请查看以下说明。
组件收到消息后,消息仍然在队列中。为了防止您描述的情况,Amazon SQS会通过可见性超时阻止它们,这是Amazon SQS阻止其他消费组件接收和处理该消息的一段时间。一旦您的实例处理了一条消息,它就应该调用一个从队列中删除消息的命令。如果由于某种原因,实例在可见性超时期间没有完成作业,则该消息可再次用于其他实例。
您可以在此处找到更多信息: http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AboutVT.html