我有一个SQS Worker Tier beanstalk应用程序正在侦听队列。如果我们遇到任何问题,例如数据库崩溃,我们是否有办法暂时停止工作层使用该队列而不必终止环境并在我们想要恢复时重新构建它?
我认为一个黑客会让我们把它指向一个空的队列,但我宁愿避免那种类型的东西。
由于
答案 0 :(得分:0)
另一种选择是保持原样。如果数据库崩溃或任何其他错误,您的应用程序将返回例如500而不是200,并且消息将返回到队列以供将来处理。
答案 1 :(得分:0)
对于和我在同一条船上的人,我只想发布自己的,不优雅的解决方案。
我们已经创建了另一个SQS队列,每当我们想要关闭消息处理时,我们只需更新工作层应用程序以指向这个新队列。它不干净,但它可以满足我们的需求。
答案 2 :(得分:0)
不确定这是否有帮助,但是您可以向SQS队列添加传递延迟:右键单击队列->配置队列->设置class EnrichRecordsWithWindowMetadata extends DoFn<...> {
@ProcessElement
public void processElement(@Element XmlRecord xmlRecord, MyCustomMetadataWindow metadataWindow) {
... enrich record with metadata on window ...
}
}
最多15分钟。在此延迟后将收到任何消息。这使我可以“暂停”队列长达15分钟。
答案 3 :(得分:-1)
您可以终止环境并重新创建它。如果您无法通过一个命令重新创建相同的环境,请查看:https://github.com/ThoughtWorksStudios/eb_deployer