标签:java event-handling amazon-web-services amazon-sns amazon-sqs
在过去几年中,我们使用自己的RM应用程序来处理与我们的应用程序相关的事件.这通过每隔几分钟轮询一个数据库表,查找之前有截止日期但尚未处理的任何行来工作.
我们目前正在向SNS过渡,SQS Worker层处理它们.这种方法的问题是我们将来不能约会我们的消息.我们的应用程序有时会有一些我们不希望在一周之后处理的事件.
是否有任何设计方法,替代服务,我们可以使用的聪明技巧,这将使我们能够做到这一点?
一个解决方案是保持我们现有的应用程序在简化的水平上运行,所以它只是在它们到期时发送SNS通知,但这个项目的目的是试图取消我们现有的应用程序.
解决方法:
数据库方法是最明智的,小心每行只处理一次.
Amazon Simple Notification Service(SNS)旨在立即发送通知.延迟发送没有任何功能(尽管某些通知类型如果失败则会重试).
Amazon Simple Queue Service(SQS)确实具有延迟功能,但最多只有15分钟 – 如果您需要在处理消息之前做一些工作(例如将相关数据复制到Amazon S3),这将非常有用.
鉴于您的要求是等待一段未来的任意时间(实际上就像一个调度系统),您可以启动一个进程并告诉它在一段时间内休眠(如果系统重新启动则是一个坏主意),或者继续您从数据库轮询的方法.
如果所有作业都安排在遥远的未来(例如至少一小时之外),理论上你只需要每小时轮询一次数据库以检索最早的预定时间.
标签:java,event-handling,amazon-web-services,amazon-sns,amazon-sqs 来源: https://codeday.me/bug/20190703/1362312.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。