p.m*_*aes 8 queue message-queue amazon-sqs
我知道可以使用多个线程来使用SQS队列.我想保证每条消息都会消耗一次.我知道可以更改消息的可见性超时,例如,等于我的处理时间.如果我的进程花费的时间超过可见性超时(例如,连接速度慢),则其他线程可以使用相同的消息.
保证邮件处理一次的最佳方法是什么?
Kre*_*ase 26
保证邮件处理一次的最佳方法是什么?
你要求保证 - 你不会得到保证.您可以减少被处理的消息的概率比一次更极少量的,但你不会得到保证.
我将解释为什么,以及减少重复的策略.
在大多数情况下,通过利用SQS消息可见性超时,从这些来源重复的可能性已经相当小 - 比如小百分之几.
如果处理副本确实不是那么糟糕(努力使你的消息消费是幂等的!),我会认为这足够好 - 减少重复的机会进一步复杂并且可能很昂贵......
好的,这里我们沿着兔子洞走下去...在高层,您将需要为您的消息分配唯一的ID,并在开始处理之前检查正在进行或已完成的ID的原子缓存: