【问题标题】:CloudQueueMessage - retry mechanismCloudQueueMessage - 重试机制
【发布时间】:2015-12-21 19:15:37
【问题描述】:

我使用 Azure 存储队列来处理我的项目处理流程。任务正在进入队列,由后台服务器处理并从队列中删除。

在某些情况下,某些任务的处理失败(由于环境变量 - 这是无法预料的)。在这种情况下,我想再次重试任务的执行。如果这次处理很好,一切都很好 - 只需将其从队列中删除即可。否则,将其从队列中移除,并将一些消息写入日志。

所以,我正在寻找一些将元数据添加到 CloudQueueMessage 项的机制。我想到了一个名为“重试”的新元数据。这将是一个柜台。但我没有看到任何将元数据添加到队列项的选项。

另一种选择是使用 Wrapper 类包装我的项目,该类将添加“重试”属性。从队列中取出项目后,使用修改后的“重试”值重新插入它。这应该可行,但不是一个优雅的解决方案。

你有什么建议?

【问题讨论】:

标签: c# azure azure-storage azure-storage-queues


【解决方案1】:

您不必这样做。当您的工作人员角色从队列中拾取该项目时,它实际上仍然存在,但标记为不可见。默认情况下,它在 30 秒内不可见。不过,您可以使用“visibilityTimeout”设置可见性。该项目会一直保留在队列中,直到您将其移除。

【讨论】:

  • 这是一个不错的方法。但是,我怎么能确定这是我第二次处理这个特定项目呢?请注意,在第二次尝试后,我想将其从队列中删除。否则,这将是无限循环。
  • 我找到了解决方案。我可以使用“Message.DequeueCount”来了解这条消息已经出队了多少次。非常感谢。
猜你喜欢
  • 2015-05-01
  • 2015-12-22
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多