Azure队列和表存储事务的最佳实践



使用azure表存储,我了解到同一分区中的实体组事务。现在,如果我将Azure队列与表存储一起使用会发生什么。是否可以处理队列中的消息,插入表存储。如果出现故障,是否回滚并再次将消息放入队列?

或者我应该如何使用Azure 处理这样的场景

表和队列没有任何关联的事务。

以下是一些通用队列使用指南:

  • 确保队列操作是幂等的,也就是说,多次执行队列消息会得到相同的结果,并产生可重复的副作用
  • 设置合理的队列消息可见性超时。如果你的任务看起来需要更长的时间,你可以延长消息的不可见超时。这可以防止其他线程/角色实例在您仍在处理同一队列项目时获取该队列项目
  • 对于长时间运行的任务(或者那些您希望避免多次消耗资源的任务,如果可能的话),请在此过程中修改队列消息,并为自己提供状态提示。例如:您有一条渲染视频队列消息:'RENDER|Source-URL'。您正在渲染视频,它需要两个过程。您已经完成了第1步,结果存储在临时blob中。您可以使用类似'RENDER|Source-URL|Pass1-URL'的内容来修改消息。现在,假设出现问题,并且渲染任务由于某种原因而失败。稍后,当您再次收到此消息时,您可以从第2遍开始,而不是从一开始
  • 您不必担心将消息重新放入队列。在明确删除消息之前,消息实际上不会从队列中删除。在您选择的不可见超时期间,它们只是变得不可见。如果您在该期限结束时没有删除(或延长期限),则该消息将再次可见,供其他人阅读注意:此时,一旦其他人读取队列消息,原始消息持有者将无法再删除该消息

最新更新