带有DLQ的SQS扇出

时间:2018-03-07 03:43:45

标签: amazon-web-services amazon-sqs

我正在考虑使用SNS-SQS服务为运行相同服务的计算机提供更新。由于计划不是让机器彼此通信,我计划为每台机器创建一个SQS(SQS将在启动时创建)。

但是,我不确定在这种情况下如何使用死信队列(DLQ)。每个SQS应该有自己的DLQ,还是我可以在该地区的SQS中共享一个共同的?我对前一种方法的关注是创建了太多的队列(2x机器),后来的问题是队列中同一消息的潜在多个副本。

使用多个SQS队列时,最佳做法和推荐方法是什么?

2 个答案:

答案 0 :(得分:0)

我不会关心队列的数量 - 它们不需要任何费用 - 所以它实际上取决于你打算如何使用死信队列中的项目。我会假设你将有一些过程来审查DLQ中的项目,以找出它们在到期之前没有被处理的原因。

在不知道您计划做什么的细节的情况下,我认为单个DLQ会更好,如果您需要定期处理DLQ记录,处理应用程序/系统只需要监视该单个队列。

在这种情况下无法看到多个DLQ的优势,至少基于您的问题。

答案 1 :(得分:0)

当您计划执行fanout process时,拥有多个队列只要它们用于异步处理就不会造成伤害。否则,首选单个队列。当你想要通过将它们分成几个队列并分别处理它们来同时处理几个任务时,通常会使用扇出过程。 (to read more about fanout

Dead Letter Queue (DLQ)的目的是存储某个进程无法成功完成的消息。除非您的进程存在重大错误,否则将存储在DLQ中的元素数量应该非常少。因此,可以继续使用一个DLQ用于所有其他SQS。

拥有多个DLQ会带来开销,其中多个进程必须轮询DLQ以查找失败的消息。只有一个DLQ可以减少这种开销。

如果要存储不同类别的失败消息,建议使用多个DLQ。