【问题标题】:Is it possible to have a transaction apply to both an Azure Queue and an Azure Table?是否可以将事务同时应用于 Azure 队列和 Azure 表?
【发布时间】:2019-04-09 05:59:53
【问题描述】:

我有一个四步序列,我想进行交易。

1) 在 WebJob 中从 Azure 队列接收消息

2) 做一些非常复杂的工作,包括在后台启动 GIT。

3) 处理 Azure Tables 中的一些数据,将结果写入另一个 Azure Table。

4) 通过 Azure Queue 将通知推送到下一个工作流。

我希望所有这些都是事务性的,这样任何失败都会阻止第一步中的消息永久出队。这可能吗?

【问题讨论】:

    标签: azure transactions azure-table-storage azure-queues


    【解决方案1】:

    对此没有 Azure 支持。通常也无法实现队列消息的一次性传递。

    可能对您来说最好的解决方案是使用至少一次传递(默认)并使消息处理具有幂等性。这意味着消息处理程序必须检测消息是否已被处理。它可以通过检查 Azure 表来查看结果是否已经存在。

    【讨论】:

    • Azure 中有事务队列产品,还是我应该支持一个便宜的 vm 和我们的 msmq?
    • 我最终改变了我的方法。我没有将任何数据放入队列,而是将所有数据放入 Azure 表中并使用标志来指示状态。然后,队列消息只是每个事件的 RowKey 的 GUID。如果事务部分失败,我将事件 GUID 重新排队。如果事件已经被处理,我什么也不做(因此从队列中消耗事件)。
    • @TheSharpNinja 这是一个很好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2015-11-18
    • 1970-01-01
    • 2021-07-22
    • 2021-11-16
    • 2020-06-09
    相关资源
    最近更新 更多