我有一个应用程序,即从Amazon SQS读取事件。我遇到的问题是,当我部署一个较新的应用程序版本时,它会连接到同一个队列,因此有两个堆栈 - 旧的和新的堆栈消耗消息。
我想保持旧堆栈消耗95%的消息而新消息只占5%,所以我可以进行实时测试。当我有信心时,新版本很好,我关闭旧堆栈并使新版本消耗100%的事件。
我现在看到的唯一解决方案是在应用程序端实现一些功能,例如一些REST端点,以控制它应该尝试读取的SQS消息的数量。 但是,可能存在针对此问题的一些其他解决方案/工具。 (事实上,有几个应用程序,所以如果我能解决这个问题而不涉及所有这些问题,那就太棒了)
一般情况下,您如何处理新版本部署和从SQS阅读?
感谢
答案 0 :(得分:1)
假设有两个应用程序堆栈:S1,需要处理90%的消息,S2为10%。
这是他们可以做的:
n_messages_to_get
和n_messages_to_process
。对于S1,值分别为10和9。分别为S2,10和1。n_messages_to_get
,但只会从中处理n_messages_to_process
。您还可以考虑在DynamoDB等数据库中进行此配置,这样您就不必部署代码,以防需要拨号或关机。
做出的假设: