我制作了一个网页表单,在提交后会启动一个大型操作流程,可能会导致大量通知被发送给其他一些用户。
为了避免最终用户在短时间内多次批量提交,我想将这些操作排队(或什么?)并在一定延迟后,只实际提交最新条目
我目前正在使用AWS并使用SQS试验各种解决方案。不幸的是,我找不到一个好的解决方案。
现在,我正在做以下事情,但我假设我使用了错误的工具:
用户首次提交:
然后我有一个单独的进程,每10分钟重新加载一个队列列表,并实际提交他们找到的任何消息。
我已经尝试过其他方法,例如尝试不同的传递延迟,各种MessageGroupId
等等,但我最终遇到了同样的问题,即一个消费者无法保证获得所有消息在飞行中,延迟和不可见的消息无法出列。
此外,我不能过滤"来自队列的消息,例如仅接收与特定用户相关的消息。所以我肯定开始认为队列是错误的工具。问题是,我不知道是什么。
致以最诚挚的问候,
答案 0 :(得分:0)
很难理解你究竟想要完成什么,但我认为你应该让用户通过网络服务器提交到数据库,然后让你的定时进程查询该数据库以确保'有效&# 39;提交每隔这么多分钟处理一次。 SQL中的timestamp,max()和user / sessionId应该是唯一必需的元素。
如果您不想在运行自己的数据库服务器时下沉,可以在AWS,IBM Cloud等上提供一个托管数据库产品。
祝你好运。