检测EC2实例何时关闭(Java SDK)

时间:2014-08-19 17:06:15

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

我在AWS支持论坛上发布了此消息但尚未收到回复,所以希望您有个想法......

我们有一个自动扩展组,可根据当前负载启动或终止实例。在我目前的EC2实例中,我希望能够检测到它即将关闭并完成我的工作。

更详细地描述情况。我们有一个自动缩放组,每个实例都从一个SQS中读取内容。每个实例将运行多个线程,每个线程从同一个SQS队列读取并根据需要处理数据。

我需要知道这个实例何时会关闭,所以我可以阻止新线程读取数据,并阻止关闭直到剩余数据处理完毕。

我不确定如何在Java SDK中执行此操作,并且我担心如果没有正确处理数据,我的实例将被终止。

由于 利

1 个答案:

答案 0 :(得分:0)

如果要缩小规模,AWS Auto Scaling将在不发出警告的情况下终止您的EC2实例。

在终止之前,没有办法允许任何队列工作人员流失。

如果您的工作人员正在以事务方式处理消息,并且您没有在成功处理消息之前从SQS中删除消息,那么这应该不是问题。当实例终止时,处理将停止,并且事务不会提交。该消息不会从SQS队列中删除,并且可以在以后由其他工作人员接收和处理。

它支持的唯一排放行为是从ELB中排除HTTP连接:"If connection draining is enabled for your load balancer, Auto Scaling waits for the in-flight requests to complete or for the maximum timeout to expire, whichever comes first, before terminating instances".