【发布时间】:2017-05-08 18:01:06
【问题描述】:
我正在处理要求我在成功获取一些数据后调用特定端点的要求。我们使用发布到 SQS 队列的 SNS 主题来实现这一点,该队列又调用端点。 SNS -> SQS -> 我的端点(处理 Q 消息) -> 调用外部端点获取数据。
现在,我们发现订单处理后无法立即获取数据,现在的要求是每 30 秒尝试 5 次。
我们有什么办法可以做到这一点吗?
现在,我已经做到了,处理来自队列的消息的我的端点总是返回一个错误,以便重试消息。
我将可见性超时设置为 30 秒,这样消息每 30 秒重试 5 次。
有没有更好的方法来实现我想要的现有设置? 请帮忙。
【问题讨论】:
-
如果 SQS 本身需要重试,我认为无论您做什么都是唯一的方法。否则修改 SNS 的来源以仅在“数据可用”时发送通知。
-
谢谢,但问题是,在调用外部端点之前,我不知道数据是否可用
-
有没有更好的方法来实现我想要的? 这个解决方案并没有什么问题。这是可见性超时的可行用途。我有一个应用程序在重试之间等待 5 分钟,这正是我处理它的方式。鉴于 SQS 的设计具有内置限制,因此每个队列“仅”允许拥有 120,000 条已至少收到一次的消息,并且它们的可见性超时计时器随时运行......它似乎他们将其设计为以这种方式使用。
标签: amazon-web-services amazon-sqs amazon-sns delayed-execution retrypolicy