java – 创建将来要处理的Amazon SNS消息

在过去几年中,我们使用自己的RM应用程序来处理与我们的应用程序相关的事件.这通过每隔几分钟轮询一个数据库表,查找之前有截止日期但尚未处理的任何行来工作.

我们目前正在向SNS过渡,SQS Worker层处理它们.这种方法的问题是我们将来不能约会我们的消息.我们的应用程序有时会有一些我们不希望在一周之后处理的事件.

是否有任何设计方法,替代服务,我们可以使用的聪明技巧,这将使我们能够做到这一点?

一个解决方案是保持我们现有的应用程序在简化的水平上运行,所以它只是在它们到期时发送SNS通知,但这个项目的目的是试图取消我们现有的应用程序.

最佳答案 数据库方法是最明智的,小心每行只处理一次.

Amazon Simple Notification Service(SNS)旨在立即发送通知.延迟发送没有任何功能(尽管某些通知类型如果失败则会重试).

Amazon Simple Queue Service(SQS)确实具有延迟功能,但最多只有15分钟 – 如果您需要在处理消息之前做一些工作(例如将相关数据复制到Amazon S3),这将非常有用.

鉴于您的要求是等待一段未来的任意时间(实际上就像一个调度系统),您可以启动一个进程并告诉它在一段时间内休眠(如果系统重新启动则是一个坏主意),或者继续您从数据库轮询的方法.

如果所有作业都安排在遥远的未来(例如至少一小时之外),理论上你只需要每小时轮询一次数据库以检索最早的预定时间.

点赞