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

Ras*_*sen 3 azure azure-storage azure-table-storage azure-queues

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

或者我应该如何处理Azure的这种情况

Dav*_*gon 6

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

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

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